通常开发人员及程序员需要关注数据库的性能,尤其是在设计数据库表结构及查询数据记录时都需要注意数据库操作的性能,而数据库常应用在大型程序开发项目中,大多数情况下,数据库的操作性能往往会成为整个应用的性能瓶颈,所以本文将分析实用的优化MySQL数据库方法。
一般来说,数据库的优化方法主要分为两种,分别是减少I/O次数和降低CPU计算。而正规的数据库计算流程如下:
数据库的优化方法:
1、SQL语句优化
若我们想要通过优化SQL语句来达到优化MySQL数据库的目的,方法只有一个,那就是改变SQL的执行计划,少走弯路,尽量通过“捷径”来找到数据。
①少使用join语句
MySQL优化器效率高,但统计信息数量有限,工作过程中出现偏差的问题概率高,尤其是复杂的多表join,MySQL由于优化器的限制,所以性能表现不如Oracle等关系型数据库。
②尽量少使用排序语句
MySQL的排序操作会消耗较多的CPU资源,所以减少排序可以在缓存命中率高等 IO 能力足够的场景下会较大影响 SQL的响应时间。
③尽量避免使用select*,用join替代子查询
④尽量少使用“or”关键字
⑤尽量用union all替代union
union是需要将两个以上的结果集合并后再进行唯一过滤操作,这过程中将涉及到排序,增加不必要的CPU运算。
⑥尽量避免类型转换
⑦用DISTINCT替代GROUP BY
⑧尽量避免使用SELECT INTO语句
⑨从全局出发优化,而不是片面调整
2、表结构优化
MySQL数据库是基于行(Row)存储的数据库,当我们操作IO时是以Page(block)方式,也就是说处理相同行数的数据,需要访问的page就会减少,也就是IO操作次数降低,直接提升性能。
①数据类型选择
数据行的长度争取不要超过8020字节
数据类型:非万不得已情况下不要使用Double
字符类型:定长字段建议选用Char类型
事件类型:尽量使用TimeStamp类型
ENUM &SET:对于住哪个台字段,可采用ENUM存放。
②字符编码
字符集直接决定了数据在MySQL中的存储编码方式,由于同样的内容使用不同字符集表示所占用的空间大小会有较大的差异,所以通过使用合适的字符集,可以帮助我们尽可能减少数据量,进而减少IO操作次数。
③尽量使用NOT NULL
3、数据库架构优化
分布式和集群化:负载均衡、读写分离、数据切分
4、其他优化
适当使用视图加速查询
尽量避免使用游标
封装存储过程