mysql,及postgresql 等SQL语句优化和大表优化解决方案

前言

当单表记录数过大时,增删改查性能都会急剧下降,可能原因:没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 、I/O吞吐量小,形成了瓶颈效应、没有创建计算列导致查询不优化、内存不足、网络速度慢  、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)  、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源返回了不必要的行和列查询语句不好,没有优化 ,可以参考以下步骤来优化。

 单表优化

除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的。而事实上很多时候postgresql单表的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据量:

字段

  • 1、尽量使用TINYINT、SMALLINT、MEDIUM_INT作为整数类型而非INT,如果非负则加上UNSIGNED
  • 2、VARCHAR的长度只分配真正需要的空间
  • 3、使用枚举或整数

你可能感兴趣的:(#,Postgres,#,mysql,#,调优)