03 2022 档案
摘要:慢SQL治理主要从三个方面进行优化 从数据表的定义开始优化 从索引设计开始优化 从查询开始优化 优化表设计 表字段长度尽量紧凑,字段尽量不冗余 字段类型尽量考虑用简单的类型 字段尽量有默认值,且默认值尽量不要用null 优化索引 设计索引的时候,尽量让查询用到索引,并且减少回表次数。 业务查询频率高
阅读全文
摘要:binlog的写入机制 每个线程都会先将日志写入到binglog cache, 事务提交的时候,再把binlog cache写到binlog文件中。所有线程都写一个binlog日志。 binlog_cache_size 用于控制单个线程内binlog cache 所占内存的大小,如果超过了这个参数规
阅读全文
摘要:短连接风暴 正常的短连接模式就是连接到数据库后,执行很少的 SQL 语句就断开,下次需要的时候再重连。 怎么解决短连接引起数据库连接数暴涨的问题? 先处理掉那些占着连接但是不工作的线程。怎么做呢?show processlist, 踢掉显示为sleep的线程,但是这样也会误杀执行事务的线程,使用命令
阅读全文
摘要:幻读指的是事务中读取到的记录数量不一致,只有RR可重复读事务隔离级别才存在幻读。 并且幻读需要当前读才会出现。 幻读有什么问题? 造成数据不一致的问题。尤其时binlog 格式为statement。先开始但后提交的事务会将数据覆盖更新了 如何解决幻读? MVCC版本控制 + 间隙锁。间隙锁和间隙锁不
阅读全文
摘要:众所周知,MySQL索引是以B+树存储的,而且是否使用索引是由引擎决定的,当MySQL觉得走索引花费开销大时,反而会放弃走索引。 总结一下,哪些情况下会使索引失效: 对where条件中的字段进行了函数操作,比如month(t_modified)=7; 隐式类型转换,比如where id_card=1
阅读全文