摘要:
1.分区表: 概念: 底层用多个物理子表组成。对于应用层来说可以不做变化,我们无需改变原有的SQL语句 建表时使用PARTITION BY定义每个分区存放的数据 原理: 打开并锁住所有的底层表,优化器判断可过滤的分区,继而进行增删改查 适用场景: 1.表很大无法全部放到内存中(查询的时候过滤掉一些分 阅读全文
摘要:
最好是从查询语句和响应时间入手来分析问题,而不是配置项,一般节省时间和避免麻烦的还是使用默认配置,除非明确知道默认值有问题。 原则: 一次只改变一个设置!这是测试改变是否有益的唯一方法。 大多数配置能在运行时使用SET GLOBAL改变。这是非常便捷的方法它能使你在出问题后快速撤销变更。但是,要永久 阅读全文
摘要:
一、查询变慢的原因 Mysql执行查询时会有很多子任务,查询的声明周期大致可以分为: 从客户端,到服务器,然后在服务器上进行解析,生产执行计划,执行,并返回结果给客户端。 其中最重要的一环是“执行”,这其中包含了大量为检索数据到存储引擎的调用以及调用后的数据处理,包括排序、分组等。 查询性能低下最根 阅读全文
摘要:
索引基础知识 很多人都喜欢将索引比作字典的目录。我们想要查某个字时,先在目录里查找这个字的页码(索引扫描),然后直接翻到那一页,就找到了那个字。没有目录(字典)时,我们只能一页一页地翻(全表扫描)。这样的话性能很慢。 索引可以包含一列或队列的值,即单值索引和复合索引。创建复合索引和两个1列的索引效果 阅读全文
摘要:
1、Schema优化 Schema的设计非常重要,良好的Schema设计能够提高mysql的性能 1.1.一些错误的Schema设计: 太多的列 MySQL的存储引擎API工作时需要在服务器层和存储引擎层之间通过行缓冲格式拷贝数据,然后在服务器层将缓冲内容解码成各个列。从行缓冲中将编码过的列转换成行 阅读全文