sql日志文件太大会影响性能吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql日志文件太大会影响性能吗相关的知识,希望对你有一定的参考价值。

  sql server数据库日志文件过大不会影响运行速度,但是会导致数据无法写入。
  SQL Server数据库中,当日志文件过大或者日志已满时就会影响到数据库的正常工作。而日志文件已满常常会造成SQL Server数据库无法写入的问题。
解决方法:
1、右键数据库→属性→选项→故障还原模型→设为简单→确定;
2、右键数据库→所有任务→收缩数据库→确定;
3、右键数据库→属性→选项→故障还原模型→设为大容量日志记录→确定。
参考技术A 你的数据库的数据量大吗?如果大,肯定的。 你的数据操作很频繁吗?如果频繁,一定的。 如果这两项都不符合,那没有道理。 参考技术B

我有个大的 SQL 文件要回放,需要马上做,但又怕压死业务,怎么办?

先来建一个测试库:

塞一些数据进去:

看看我们填充数据的成果:

使用 mysqldump 导出一份数据:

现在我们假设要把这个 dump 文件,回放到一个数据库中,并且现在数据库正在承担很重的业务,我们不希望业务受到太大影响。

先来看看如果直接回放 dump 文件,会发生什么?

我们看到 MySQL 的 cpu 会彪起来,

我们换一个方式来回放 dump:

看看 CPU 压力:

可以看到 CPU 已经非常冷静,并且缓慢的处理数据。

💡小贴士:pv 工具既可以用于显示文件流的进度,也可以用于文件流的限速。在本实验中,我们用 PV 来限制 SQL 文件发到 MySQL client 的速度,从而限制 SQL 的回放速度,达到不影响其他业务的效果。

本回答被提问者采纳

logback打印sql

以前服务器上不打印sql, 因为sql日志太多,会将其他日志刷掉(日志太多自动删除),参考别人将sql日志分开来,互补影响。挺不错的思路,预研如下。


 <appender name="DRUIDSQL" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 日志文件的路径及文件名 --> <file>${LOG_HOME}/${COMPONENT_NAME}_sql.log</file> <!-- 追加方式记录日志 --> <append>true</append> <!-- 日志记录器的滚动策略,按日期,按大小记录 --> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/${COMPONENT_NAME}_sql.%d{yyyy-MM-dd}.%i.log</fileNamePattern> <maxFileSize>10MB</maxFileSize> <maxHistory>30</maxHistory> <totalSizeCap>2GB</totalSizeCap> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} [%X{RequestId}] - %msg%n</pattern> <charset>utf-8</charset> </encoder> </appender>

方法1:配置dao路径

yml文件

logging: level: com: yangyc: baseservice: test: mapper: debug

 

logback-config.xml

<logger name="com.yangyc.baseservice.ms.mapper" level="debug" additivity="false"> <appender-ref ref="DRUIDSQL"/> </logger>





方法2:

yml文件

spring:  datasource: druid: filters: stat,slf4j

logback-config.xml

<logger name="druid.sql.Statement" level="debug" additivity="false"> <appender-ref ref="DRUIDSQL"/> </logger>


方法2一直失败,没有打印sql,后面找到原因是durid的filters没有配置slf4j




另外附上log4j2的配置

yml文件

logging: level: com: yangyc: baseservice: test: mapper: debug


logback-config.xml

<RollingFile name="DRUIDSQL" fileName="${logFilePath}/druid-sql.log" filePattern="${logFilePath}/$${date:yyyy-MM}/druid-%d{yyyy-MM-dd}-%i.log"> <PatternLayout pattern="${LOG_PATTERN}"/> <Policies> <SizeBasedTriggeringPolicy size="200 MB"/> <TimeBasedTriggeringPolicy/> </Policies> </RollingFile>
<logger name="druid.sql.Statement" level="debug" additivity="false"> <appender-ref ref="DRUIDSQL"/> </logger>



以上是关于sql日志文件太大会影响性能吗的主要内容,如果未能解决你的问题,请参考以下文章

SQL备份文件太大 ,该怎么删除日志文件让他缩小,请大虾告知

MySQL数据目录详解(SQL语句与表文件的对应关系操作系统对数据库对象名字的约束影响表最大长度的因素数据目录结构对系统性能的影响MySQL状态文件和日志文件)

Sqlserver数据库日志太大如何快速删除

logback打印sql

sql2000收缩数据库会对数据影响吗

怎样收缩SqlServer2005的日志文件