MySQL
larva_s
这个作者很懒,什么都没留下…
展开
-
《MySQL技术内幕:InnoDB存储引擎》4. 索引
文章目录1. 索引1.1 索引I/O次数1.2 覆盖索引为什么就不需要回表2. 聚集(聚簇)索引3. 辅助(非聚集)索引4. 分裂5. cardinality:基数6. 联合索引6.1 键是排序的6.2 第二个键无法用到索引的原因7. 覆盖索引8. MRR优化:multi-range read9. ICP优化:index condition pushdown10. 哈希算法参考资料not nul...原创 2019-02-21 23:32:24 · 313 阅读 · 0 评论 -
《MySQL技术内幕:InnoDB存储引擎》5. 锁的算法
文章目录1. innodb可重复读时默认算法:next-key lock,解决幻读现象2. 锁的3种算法1. record lock:单个记录锁2. gap lock:间隙锁,锁定一定范围,但不包括记录本身3. next-key lock:锁定一定范围,包括记录本身(innodb的算法)4. phantom problem3. 死锁1. 解决死锁方法1:超时2. 解决死锁方法2:wait-f...原创 2019-02-21 23:44:45 · 202 阅读 · 0 评论 -
扣减库存出现锁表情况
文章目录1. 锁表情景:查询条件没有索引时2. 解决3. 参考:1. 锁表情景:查询条件没有索引时 库存表中,扣库存时的where条件居然不是id而是奖品类型,而刚好是用事务控制的,微信红包还得调用微信发奖,导致锁表(间隙锁),并且这锁住的时间还是很严重的,每次都得等第三方接口调用成功处理完后续逻辑后,事务才会结束,秒杀场景下就导致了大部分用户超时失败的情况了,以下就是复现了当时的情景...原创 2019-02-17 15:21:54 · 540 阅读 · 0 评论 -
《MySQL技术内幕:InnoDB存储引擎》2. InnoDB的体系架构
文章目录1. 后台线程1.1 master thread2. 内存池1. 缓存池1. 作用2. 算法:LRU算法,增加midpoint的LRU算法2. 缓存池列表3. 脏页刷新机制:checkpoint机制1. 脏页:在LRU中被改变的数据2. checkpoint机制4. 关键特性4.1 插入缓冲4.2 insert buffer4.3 两次写(double write)4.4 自适应哈...原创 2019-02-17 16:29:11 · 223 阅读 · 0 评论 -
《MySQL技术内幕:InnoDB存储引擎》1.MySQL体系结构
文章目录1. 使用官方示例数据库1. 数据库与实例的关系3. MySQL数据在操作系统的表现形式:文件权限读写4. mysql配置文件:/etc/mysql/mysql.conf.d/mysqld.cnf5. 开启远程连接:设置用户权限6. 各个引擎比较7. 连接数据库的方式1. 使用官方示例数据库MySQL官方示例数据库:https://dev.mysql.com/doc/index-oth...原创 2019-02-17 16:31:13 · 125 阅读 · 0 评论 -
《MySQL技术内幕:InnoDB存储引擎》3. 文件(日志)
文章目录1. 参数2. 错误日志3. 慢查询日志4. 重做日志 redo log:物理页面5. 回滚日志 undo log:逻辑格式6. 二进制日志binary log6.1 表结构定义文件:frm结尾6.2 重做日志与二进制日志文件的区别1. 参数1. 动态参数:show variables like 'read_buffer_size';-- 1. 设置会话参数set session...原创 2019-02-17 23:10:08 · 120 阅读 · 0 评论 -
《MySQL技术内幕:InnoDB存储引擎》6. 锁
文章目录1. latch和lock2. 锁lock2.1 锁的类型3. 一致性非锁定读:快照数据3.1 通过如下三个表可观察锁的情况3.2 多版本并发:MVVC4. 一致性锁定读:支持如下两种5. 自增长和锁6. 外键和锁7. 修改事务隔离级别8. 问题:for update后其他update语句会被阻塞延迟执行8.1 事务1:加排他锁(悲观锁)8.2 事务2:update已有锁的行,会被阻塞,等...原创 2019-02-23 11:36:49 · 221 阅读 · 0 评论 -
《MySQL技术内幕:InnoDB存储引擎》7. 事务
文章目录认识事务事务概念事务的分类事务的实现redo和undoredo:重做日志undo:撤销/回滚操作undo作用一:回滚undo作用二:MVCCundo格式purgegroup commit事务控制语句commitrollback隐式提交的sql语句truncate事务的隔离级别read uncommitted:读未提交-->脏读,违反隔离性read committed:读已提交(不可重...原创 2019-02-23 11:50:50 · 307 阅读 · 0 评论