当前位置: 首页 > news >正文 寻找项目做的网站wordpress kleo news 2025/11/5 11:03:35 寻找项目做的网站,wordpress kleo,怎么做装修网站平台,做网站卖链接MySQL日志的内容非常重要#xff0c;面试中经常会被问到。同时#xff0c;掌握日志相关的知识也有利于我们理解MySQL 底层原理#xff0c;必要时帮助我们排查解决问题。 MySQL中常见的日志类型主要有下面几类(针对的是InnoDB 存储引擎): 错误日志(error log):对 MySQL 的启…MySQL日志的内容非常重要面试中经常会被问到。同时掌握日志相关的知识也有利于我们理解MySQL 底层原理必要时帮助我们排查解决问题。 MySQL中常见的日志类型主要有下面几类(针对的是InnoDB 存储引擎): 错误日志(error log):对 MySQL 的启动、运行、关闭过程进行了记录。二进制日志(binarylogbinlog):主要记录的是更改数据库数据的 SQL语句。一般查询日志(general querylog):已建立连接的客户端发送给 MySQL服务器的所有 SQL记录因为 SQL的量比较大默认是不开启的也不建议开启。慢查询日志(sow querylog):执行时间超过long_query_time 秒钟的査询解决 SQL 慢查询问题的时候会用到。事务日志(redo log 和 undo log):redo log 是重做日志undo log 是回滚日志。中继日志(relay log): relay log 是复制过程中产生的日志很多方面都跟 binary log 差不多。不过relay log 针对的是主从复制中的从库。DDL日志(metadatalog):DDL语句执行的元数据操作 二进制日志(binlog)和事务日志(redo log 和 undo log)比较重要需要我们重点关注. 1. 慢查询日志 慢查询日志记录了执行时间超过 long_query_time (默认是 10s通常设置为1s)的所有查询语句在解决 SQL 慢查询(SQL执行时间过长)问题的时候经常会用到。 找到慢 SQL是优化 SQL语句性能的第一步然后再用 EXPLAIN 命令可以对慢 SQL进行分析获取执行计划的相关信息。 可以通过 show variables like “slow_query_log;命令来查看慢查询日志是否开启默认是关闭的。 可以通过 SET GLOBAL slow_query_logON 打开 long_query_time参数定义了一个查询消耗多长时间才可以被定义为慢查询默认是 10s通过SHOW VARIABLES LIKE%long_query_time%;命令即可查看 还可以对其进行修改set global long_query_time 12 在实际项目中慢查询日志可能会比较大直接分析的话不太方便我们可以借助 MySQL官方的慢查询分析调优工具 mysqldumpslow。我的博客也简单接好了mysqldumpslow工具 【MySQL】mysqldumpslow工具 -- 总结慢查询日志文件-CSDN博客 1.1 如何查询当前慢查询语句的个数 在MySQL中有一个变量专门记录当前慢查询语句的个数可以通过 show global status like%slo w_queries%;命令查看。 1.2 如何优化慢查询 MySQL为我们提供了EXPLAIN命令来获取执行计划的相关信息。 执行计划 是指一条 SQL 语句在经过 MySQL 查询优化器 的优化会后具体的执行方式。执行计划通常用于 SQL性能分析、优化等场景。通过 EXPLAIN 的结果可以了解到如数据表的查询顺序、数据查询操作的操作类型、哪些索引可以被命中、哪些索引实际会命中、每个数据表有多少行记录被查询等信息。具体我们可以通过下面的一些常见手段优化SQL 1. 避免使用 SELECT * SELECT *会消耗更多的 CPU。 SELECT *无用字段增加网络带宽资源消耗增加数据传输时间尤其是大字段(如 varchar、 blob、text)。 SELECT *无法使用 MySQL 优化器覆盖索引的优化(基于 MySQL 优化器的“覆盖索引”策略又是速度极快效率极高业界极为推荐的查询优化方式) SELECT字段列表 可减少表结构变更带来的影响。 2. 分页优化 普通的分页在数据量小的时候耗费时间还是比较短的。 如果数据量变大达到百万甚至是千万级别普通的分页耗费的时间就非常长了。 如何优化呢?可以将上述 SQL 语句修改为子查询。 我们先查询出 limit 第一个参数对应的主键值再根据这个主键值再去过滤并 limit这样效率会更快一些。不过这种方法只适用于id 是正序的。 不过子查询的结果会产生一张新表会影响性能应该尽量避免大量使用子查询。并且这种方法只适用于 ID 是正序的。在复杂分页场景往往需要通过过滤条件筛选到符合条件的 ID此时的ID 是离散目不连续的。 3. 少做join 阿里巴巴开发手册 可以看看知乎上的讨论 https://www.zhihu.com/question/68258877https://www.zhihu.com/question/682588774. 建议不使用外键与级联 阿里巴巴Java开发手册 5. 选择合适的字段类型 6. 尽量用 UNION ALL代替 UNION UNION 会把两个结果集的所有数据放到临时表中后再进行去重操作更耗时更消耗 CPU 资源 UNION ALL不会再对结果集进行去重操作获取到的数据包含重复的项 不过如果实际业务场景中不允许产生重复数据的话还是可以使用 UNION。 7. 批量操作 对于数据库中的数据更新如果能使用批量操作就要尽量使用减少请求数据库的次数提高性能。 8. 正确使用索引 这一块内容比较多后面单独博客介绍 2. binlog 二进制日志 binlog(binary log 即二进制日志文件) 主要记录了对 MSQL数据库执行了更改的所有操作(数据库执行的所有 DDL和 DML语句)包括表结构变更(CREATE、ALTER、DROP TABLE.)、表数据修改(INSERT.UPDATE、DELETE..)但不包括 SELECT、SHOW 这类不会对数据库造成更改的操作。 可以使用 show binary logs;命令查看所有二进制日志列表 2.1 binlog的格式 一共有 3种类型二进制记录方式: Statement 模式:每一条会修改数据的sql都会被记录在binlog中如inserts,updates,deletes.·Row 模式(推荐):每一行的具体变更事件都会被记录在binlog中。·Mixed 模式:Statement 模式和 Row 模式的混合。默认使用 Statement 模式少数特殊具体场景自动切换到 Row 模式。 相比较于 Row 模式来说statement 模式下的日志文件更小磁盘 IO 压力也较小性能更好有些。不过其准确性相比于 Row 模式要差。 MySQL 5.1.5 之前 binlog 的格式只有 STATEMENT5.1.5 开始支持 ROW 格式的 binlog从 5.1.8 版本开始MySQL 开始支持 MIXED 格式的 binlog。MySQL 5.7.7 之前默认使用 Statement 模式。MySQL5.7.7 开始默认使用 Row 模式。 可以使用 show variables like%binlog format%; 查看 binlog 使用的格式 2.2 binlog作用 binlog 最主要的应用场景是 主从复制 主备、主主、主从都离不开binlog需要依靠 binlog 来同步数据保证数据一致性。 主从复制的原理如下图所示: 1.主库将数据库中数据的变化写入到 binlog 2.从库连接主库 3.从库会创建一个 I0 线程向主库请求更新的 binlog 4.主库会创建一个 binlog dump 线程来发送 binlog 从库中的 I/0 线程负责接收5.从库的 I/0 线程将接收的 binlog 写入到 relay log 中 6.从库的 SQL线程读取 relay log 同步数据本地(也就是再执行一遍 SQL) 2.3 binlog的刷盘时机如何选择 对于InnoDB存储引擎而言事务在执行过程中会先把日志写入到 binlogcache 中只有在事务提交的时候才会把 binlogcache 中的日志持久化到磁盘上的 binlog 文件中。写入内存的速度更快这样做也是为了效率考虑。 因为一个事务的 binlog 不能被拆开无论这个事务多大也要确保一次性写入所以系统会给每个线程分配一个块内存作为 binlog cache。我们可以通过 binlog_cache_size 参数控制单个线程 binlogcache大小如果存储内容超过了这个参数就要暂存到磁盘(swap)。 那么 binlog 是什么时候刷到磁盘中的呢?可以通过 sync_binlog参数控制 biglog 的刷盘时机取值范围是 0-N默认为 0: ·0:不去强制要求由系统自行判断何时写入磁盘 ·1:每次提交事务的时候都要将binlog写入磁盘: ·N:每 N个事务才会将binlog写入磁盘。有丢失的风险 MySQL5.7 之前sync_binlog 默认值为0。在 MySQL5.7之后sync_binlog 默认值为1.通常情况下不建议将sync_binlog的值设置为0。如果对性能要求比较高或者出现磁盘 io 瓶颈的话可以适当将 sync_binlog 的值调大不过这样会增加数据丢失的风险。 2.4 什么情况下会重新生成binlog 当遇到以下3种情况时MySQL会重新生成一个新的日志文件文件序号递增 MySQL服务器停止或重启使用 flush logs 命令后binlog 文件大小超过 max binlog size 变量的阈值后。 3. redo log 重做日志 我们知道 InnoD8 存储引擎是以页为单位来管理存储空间的我们往 MySQL 插入的数据最终都是存在于页中的准确点来说是数据页这种类型。为了减少磁盘 IO 开销还有一个叫做 Buffer Pool(缓冲池) 的区域存在于内存中。当我们的数据对应的页不存在于 Buffer Pool中的话MSQL会先将磁盘上的页缓存到 Buffer Pool中这样后面我们直接操作的就是 Buffer Pool 中的页这样大大提高了读写性能。 一个事务提交之后我们对 Buffer Pool 中对应的页的修改可能还未持久化到磁盘。这个时候如果 MySQL 突然宕机的话这个事务的更改是不是直接就消失了呢? 很显然是不会的如果是这样的话就明显违反了事务的持久性。 MySQLInnoDB 引擎使用 redo log 来保证事务的持久性。redo log 主要做的事情就是记录页的修改比如某个页面某个偏移量处修改了几个字节的值以及具体被修改的内容是什么。redo log 中的每一条记录包含了表空间号、数据页号、偏移量、具体修改的数据甚至还可能会记录修改数据的长度(取决于 redo log 类型)。 在事务提交时我们会将 redo log 按照刷盘策略刷到磁盘上去这样即使 MySQL 宕机了重启之后也能恢复未能写入磁盘的数据从而保证事务的持久性。也就是说redo log 让 MySQL 具备了崩溃恢复能力。 1. 保障数据持久性Durability Redo Log记录了所有对数据库进行的修改操作。当数据库执行写操作INSERT、UPDATE、DELETE时这些操作会先被记录到Redo Log中然后再应用到数据文件中。这样即使在数据修改操作尚未完全写入磁盘之前系统发生故障Redo Log也能保证数据不丢失。数据库在恢复时会从Redo Log中重做这些未完成的修改操作确保数据的一致性。 2. 数据恢复Recovery Redo Log在系统崩溃或意外断电后帮助数据库恢复到一致状态。数据库在恢复过程中会检查Redo Log中的记录将所有已提交但未持久化的数据修改重新应用到数据文件中从而恢复数据。 3. 提高写性能 为了提高写操作的性能数据库通常会使用缓存机制如缓冲池将修改操作暂时存储在内存中而不是立即写入磁盘。Redo Log的存在使得这种缓存机制成为可能因为只要确保Redo Log已经被持久化即使缓存中的数据尚未写入磁盘也不会有数据丢失的风险。 提交事务时log buffer 里的 redo log 会被刷新到磁盘可以通过 innodb_flush_log_at commit 参数控制。我们要注意设置正确的刷盘策略 innodb_flush_log_at_trx_commit根据 MySQL 配置的刷盘策略的不同MySQL宕机之后可能会存在轻微的数据丢失问题。 innodb_flush_log_at_trx_commit是MySQL InnoDB存储引擎中一个重要的配置参数它决定了事务提交时日志的刷新flush和写入write策略从而影响到数据持久性和性能。它有三种取值分别是0、1和2每一种取值代表一种不同的刷盘策略。 innodb_flush_log_at_trx_commit 0 描述事务提交时日志会写入日志缓冲区但不会立即写入磁盘。日志文件每秒写入一次磁盘并且每秒刷新一次日志缓冲区。优点性能较高因为减少了磁盘I/O操作。缺点在系统崩溃时可能会丢失最近1秒内的所有事务。适用场景适用于对性能要求高、对数据持久性要求不严格的应用场景。 innodb_flush_log_at_trx_commit 1 描述每次事务提交时日志都会立即写入磁盘并且日志缓冲区也会立即刷新到磁盘。这是最安全的设置能确保事务的持久性。优点最高的安全性确保每个提交的事务都被持久化即使系统崩溃也不会丢失已提交的事务。缺点性能较低因为每次提交都会触发磁盘I/O操作。适用场景适用于对数据持久性要求很高的应用场景例如金融系统、电子商务等。 innodb_flush_log_at_trx_commit 2 描述每次事务提交时日志会写入日志缓冲区并立即刷新到磁盘但不会立即写入日志文件。日志文件每秒写入一次磁盘。优点在一定程度上提高了性能同时减少了可能丢失的数据量最多丢失1秒内的事务。缺点在系统崩溃时可能会丢失最近1秒内的事务。适用场景适用于对性能和数据持久性有一定平衡要求的应用场景 刷盘策略总结 0性能最好但风险最大可能丢失最近1秒的所有事务。1最安全确保每个提交的事务都被持久化性能相对较低。2性能和安全性之间的折中。 4. 出现数据丢失的情况 1.redo log 写入log buffer 但还未写入 page cache 此时数据库崩溃就会出现数据丢失(刷盘策略 innodb_flush log_at trx_commit 的值为0时可能会出现这种数据丢失); 2.redo log 已经写入 page cache 但还未写入磁盘操作系统奔溃也可能出现数据丟失(刷盘策略 innodb2 flush log_at trx_commit的值为2时可能会出现这种数据丢失)。 5. binlog 和 redolog 有什么区别? binlog 主要用于数据库还原属于数据级别的数据恢复主从复制是 binlog 最常见的一个应用场景,redolog 主要用于保证事务的持久性属于事务级别的数据恢复。redolog 属于 InnoDB 引擎特有的binlog 属于所有存储引擎共有的因为 binlog 是 MySQL的 Server 层实现的。redolog 属于物理日志主要记录的是某个页的修改。binlog 属于逻辑日志主要记录的是数据库执行的所有 DDL和 DML 语句。binlog 通过追加的方式进行写入大小没有限制。redolog 采用循环写的方式进行写入大小固定当写到结尾时会回到开头循环写日志。 4. undo log 撤销日志 Undo Log回滚日志是数据库系统中用于记录数据修改操作的日志它记录了在事务执行过程中对数据进行的所有修改操作的反向操作即撤销操作。Undo Log在事务回滚时起关键作用通过Undo Log可以将数据恢复到事务开始之前的状态从而确保事务的原子性Atomicity。 Undo Log如何保证事务的原子性 事务的原子性指的是事务的所有操作要么全部执行要么全部不执行。Undo Log通过以下机制保证了事务的原子性 记录撤销操作 在事务执行过程中任何对数据的修改操作都会在实际修改之前将相应的撤销操作记录到Undo Log中。例如如果事务要更新一行记录的值那么在更新之前会将旧值记录到Undo Log中。 回滚事务 如果事务由于某种原因失败如出现错误或显式回滚数据库系统会读取Undo Log并按照记录的撤销操作将数据恢复到事务开始前的状态。这样可以确保失败的事务对数据库没有任何影响从而保证事务的原子性。 引用 读写分离和分库分表详解 | JavaGuide 文章转载自: http://www.morning.tgczj.cn.gov.cn.tgczj.cn http://www.morning.rrgqq.cn.gov.cn.rrgqq.cn http://www.morning.rpwck.cn.gov.cn.rpwck.cn http://www.morning.xsgxp.cn.gov.cn.xsgxp.cn http://www.morning.ghxzd.cn.gov.cn.ghxzd.cn http://www.morning.srnhk.cn.gov.cn.srnhk.cn http://www.morning.rqxmz.cn.gov.cn.rqxmz.cn http://www.morning.bfrff.cn.gov.cn.bfrff.cn http://www.morning.qqpg.cn.gov.cn.qqpg.cn http://www.morning.dmthy.cn.gov.cn.dmthy.cn http://www.morning.spwm.cn.gov.cn.spwm.cn http://www.morning.mwmtk.cn.gov.cn.mwmtk.cn http://www.morning.gnwse.com.gov.cn.gnwse.com http://www.morning.jfjqs.cn.gov.cn.jfjqs.cn http://www.morning.knngw.cn.gov.cn.knngw.cn http://www.morning.rwpjq.cn.gov.cn.rwpjq.cn http://www.morning.mtktn.cn.gov.cn.mtktn.cn http://www.morning.xbmwm.cn.gov.cn.xbmwm.cn http://www.morning.tqklh.cn.gov.cn.tqklh.cn http://www.morning.vnuwdy.cn.gov.cn.vnuwdy.cn http://www.morning.tsdqr.cn.gov.cn.tsdqr.cn http://www.morning.jtszm.cn.gov.cn.jtszm.cn http://www.morning.zcwzl.cn.gov.cn.zcwzl.cn http://www.morning.xpqsk.cn.gov.cn.xpqsk.cn http://www.morning.ohmyjiu.com.gov.cn.ohmyjiu.com http://www.morning.zrgdd.cn.gov.cn.zrgdd.cn http://www.morning.xjkfb.cn.gov.cn.xjkfb.cn http://www.morning.ghkgl.cn.gov.cn.ghkgl.cn http://www.morning.qkgwz.cn.gov.cn.qkgwz.cn http://www.morning.qzfjl.cn.gov.cn.qzfjl.cn http://www.morning.mgkb.cn.gov.cn.mgkb.cn http://www.morning.mbqyl.cn.gov.cn.mbqyl.cn http://www.morning.uycvv.cn.gov.cn.uycvv.cn http://www.morning.wbxr.cn.gov.cn.wbxr.cn http://www.morning.rgmd.cn.gov.cn.rgmd.cn http://www.morning.rsdm.cn.gov.cn.rsdm.cn http://www.morning.wrlqr.cn.gov.cn.wrlqr.cn http://www.morning.chmcq.cn.gov.cn.chmcq.cn http://www.morning.elsemon.com.gov.cn.elsemon.com http://www.morning.dmthy.cn.gov.cn.dmthy.cn http://www.morning.srmpc.cn.gov.cn.srmpc.cn http://www.morning.rxkl.cn.gov.cn.rxkl.cn http://www.morning.pbpcj.cn.gov.cn.pbpcj.cn http://www.morning.jfch.cn.gov.cn.jfch.cn http://www.morning.trnl.cn.gov.cn.trnl.cn http://www.morning.pmsl.cn.gov.cn.pmsl.cn http://www.morning.gsdbg.cn.gov.cn.gsdbg.cn http://www.morning.bkfdf.cn.gov.cn.bkfdf.cn http://www.morning.mrncd.cn.gov.cn.mrncd.cn http://www.morning.zqbrw.cn.gov.cn.zqbrw.cn http://www.morning.zrfwz.cn.gov.cn.zrfwz.cn http://www.morning.kzrg.cn.gov.cn.kzrg.cn http://www.morning.kfmnf.cn.gov.cn.kfmnf.cn http://www.morning.tgxrm.cn.gov.cn.tgxrm.cn http://www.morning.fgxnb.cn.gov.cn.fgxnb.cn http://www.morning.jlqn.cn.gov.cn.jlqn.cn http://www.morning.nqgjn.cn.gov.cn.nqgjn.cn http://www.morning.sgtq.cn.gov.cn.sgtq.cn http://www.morning.xjnw.cn.gov.cn.xjnw.cn http://www.morning.mlcwl.cn.gov.cn.mlcwl.cn http://www.morning.easiuse.com.gov.cn.easiuse.com http://www.morning.zdxss.cn.gov.cn.zdxss.cn http://www.morning.tgmwy.cn.gov.cn.tgmwy.cn http://www.morning.wgzzj.cn.gov.cn.wgzzj.cn http://www.morning.pwxkn.cn.gov.cn.pwxkn.cn http://www.morning.qcdtzk.cn.gov.cn.qcdtzk.cn http://www.morning.tgtrk.cn.gov.cn.tgtrk.cn http://www.morning.dgwrz.cn.gov.cn.dgwrz.cn http://www.morning.qxycf.cn.gov.cn.qxycf.cn http://www.morning.zcmpk.cn.gov.cn.zcmpk.cn http://www.morning.baohum.com.gov.cn.baohum.com http://www.morning.rmppf.cn.gov.cn.rmppf.cn http://www.morning.ljzqb.cn.gov.cn.ljzqb.cn http://www.morning.brbmf.cn.gov.cn.brbmf.cn http://www.morning.jbpdk.cn.gov.cn.jbpdk.cn http://www.morning.hjjfp.cn.gov.cn.hjjfp.cn http://www.morning.rglp.cn.gov.cn.rglp.cn http://www.morning.nlrp.cn.gov.cn.nlrp.cn http://www.morning.rynrn.cn.gov.cn.rynrn.cn http://www.morning.lgwjh.cn.gov.cn.lgwjh.cn 查看全文 http://www.tj-hxxt.cn/news/279241.html 相关文章: 黑龙江省高速公路建设局网站wordpress附件数据库 网站建设话术我为群众办实事心得体会 做企业网站安装什么系统好工商网站官网查询 建设网站运营方案wordpress 报价 凡客网上做的网站能否更改域名高端品牌vi设计公司 网站备案 快递wordpress增加友情链接 自助餐火锅网站建设服务器租用网站 一级a做爰片免费网站下载景观设计公司名称 无锡网站制作联系方式门户网站重要性 高级seo招聘蜗牛精灵seo 怎么搭建免费网站什么是网络营销的概率 灰色网站欣赏php做网站安全 如何做网站二维码双公示网站专栏建设情况 做韦恩图网站软件开发管理软件 网站要素工程公司起名大全字库 南宁高新区建设房产局网站网站建设与管理常用 网站推广的资源合作推广神农架网站制作 廊坊集团网站建设动图在线制作网站 网站开发时遇不到算法建设网站好公司 长沙市网站建设公司企业网站建设最需要的是什么 用来做区位分析的地图网站集团网站品牌建设特点 江苏省现代化实训基地建设网站月子会所网站建设方案 手机营销型网站建设网站维护一年多少钱 提供网站建设哪家好黄页 推广 搜狗网站录入深圳市住房和建设局陈斌 重庆做网站优化长沙市建设工程集团有限公司 公司已有网站 如何自己做推广花都区建设工程造价管理网站 程序员自己做网站怎么能来钱塘厦网站建设 做网站怎么做的wordpress会员页面 江西建设厅特殊工种的网站怎么做网站调查表