关系型数据库优化方案总结
1,sql语法层面。
2,应用层面。
3,数据库层面。
下面详聊:
sql语法层面
1,索引,索引的实现原理,最左匹配原则,索引失效场景,磁盘碎片整理。
2,子查询代替多表关联。多表关联的本职是多表做笛卡尔积运算,也就是乘法运算,数据量会很大,子查询相当于做加法运算,能提高查询性能。
3,in/like/not in/or/=等常见关键字的应用,避免全表扫描。
应用层面
1,crud批量操作代替单条操作,减少数据库频繁连接的开销。
2,代码中避免循环中操作数据库。
3,热点数据使用缓存,提高性能。
数据库运维层面
1,大表分表,多表分库。
2,读写分离,mycat中间件的使用,主从架构下,读写路由配置策略。
3,定期整理数据库磁盘可用空间,减少索引文件,数据文件的磁盘碎片。
pg数据库整理磁盘空间常用关键字
trancate/vacuum full
mysql数据库整理磁盘空间常用关键字
show table status like + table_name
optimize table + table_name
alter table + table_name
重建表以更新索引统计信息并释放聚集索引中未使用的空间。
4,开启慢sql监控,定期优化慢sql性能。