mysql|使用注意

设计

  1. 设计的合理性,能否容忍冗余字段,尽量一张表,方便开发
  2. 考虑使用记录表,记录一些查询和修改的记录信息
  3. 考虑业务的使用情况,设置相关索引,加速查询和修改
  4. 分库分表的合理性
  5. 存储量的预估
  6. 业务访问量的预估,是否会造成db的压力

使用

  1. 使用时间戳存储时间
  2. 使用datetime等时间格式,注意时区问题,注意设置数据库的时区
  3. 字符集问题注意
  4. 根据业务的qps和服务器的性能,合理设置连接池大小和链接时间、读取写入时间、超时时间
  5. 修改和删除数据时一定要加where语句
  6. 修改和删除时一定要先使用limit测试
……

阅读全文

mysql|explain

explain

explain显示了mysql如何使用索引来处理select语句以及连接表,可以帮助选择更好的索引和写出更优化的查询语句。

……

阅读全文

mysql|join

join流程分类

Index Nested-Loop Join

分析语句select * from t1 straight_join t2 on (t1.a=t2.a);

……

阅读全文

mysql|全表扫描问题

全表扫描流程

InnoDB 的数据是保存在主键索引上的,所以全表扫描实际上是直接扫描表 t 的主键索引。这条查询语句由于没有其他的判断条件,所以查到的每一行都可以直接放到结果集里面,然后返回给客户端。

……

阅读全文

mysql|删除流程

数据删除

删除整个表的时候,可以使用 drop table 命令回收表空间。但是,我们遇到的更多的删除数据的场景是删除某些行,这时就遇到了这样的问题:表中的数据被删除了,但是表空间却没有被回收。

……

阅读全文