MySQL中的悲观锁与常见的死锁场景

在MySQL中, 锁机制是并发条件下保护数据一致性与稳定性的一个非常重要的机制, 并且事务的实现也依赖于于锁机制。 其锁定的数据不单包括数据行记录, 同时也包括缓冲池中的LRU列表数据、日志数据等。 悲观锁(FOR UPDATE)则是日常开发中使用最多的一种锁, 但是, 由于事务隔离级别的多样性导致了悲观锁在使用时常常会有不同的表现, 死锁在程序员稍不注意时就会发生。 »

MySQL中的联合索引与覆盖索引

在上一篇文章中, 通过解析InnoDB存储引擎的.ibd数据存储文件得到了数据与索引的真实组织方式: 数据通过聚集索引在逻辑上连续存放, 二级索引保存数据主键ID(Row ID), 多棵B+Tree组合起来提供高效的索引数据查询。 除辅助索引(二级索引)外, 联合索引与覆盖索引在日常中也会经常用到。 »

MySQL物理存储方式

MySQL是基于磁盘进行数据存储的关系型数据库, 所有的数据、索引等数据均以磁盘文件的方式存储, 在有需要时载入内存读取。 为了加快数据查询的效率, 通常会在一些字段上添加索引, 但是许多文档都会告诉我们, 不要添加太多的索引, 索引不要太长, 使用数字或者空字符串来代替NULL值, 为什么会有这些建议? 这些建议又是否正确? 答案都能够从MySQL数据的物理存储方式中找到。 »

MySQL权限管理

MySQL的权限管理重要性等同于服务器数据的重要性, 权限体系如果建立的不到位的话, 也就意味着生产数据处于危险状态。 »

MySQL慢查询日志分析工具

慢查询日志使我们对MySQL进行性能优化的关键指标, 只有在确定了哪些查询的确是慢查询之后才能对症下药, 进行性能优化, 而不是凭自身的感觉去判断, 结果有事往往出乎意料。 直接打开慢查询日志进行查看效率比较低效, 所以需要借助pt-query-digest工具来进行分析。 »

binlog的正确打开方式

在前面的主从复制中我们提到了bin-log, 主从复制中bing-log主要作为一种增量复制的方法进行主库与从库的同步。 在日常生产中, bin-log常常也作为实时数据恢复的必要手段。 »

MySQL之主从复制

MySQL的主从复制是建立读写分离以及MySQL集群的根本, 为了能够保证复制的正常运行, 那么就必然需要对其原理以及核心的配置项有足够的了解, 才能够在复杂的生产环境中对错误进行排查。 »