MySQL优化手记

数据太多了,近千万的数据导致数据库运行奇慢无比,所以迫在眉睫的问题是优化数据库。

在网上看了一些帖子,在结合自己的实践,整理一下记录在这里。

关于MySQL优化,主要分下面几个方面:
1. 硬件
换高性能的cpu,加内存。(目前还没到这个阶段,现在的配置还够用,所以这个优化没在考虑之列)

2. 操作系统
据说是MySQL在linux比在windows下运行的更快,俺没试验过,但是俺们用的是linux。

3.SQL服务器(设置和查询)
主要就是my文件的配置,查询缓存、表打开的最大数目、同时连接数、是否解析服务器名还是IP地址和服务器名都解析等等。具体的可以使用 show status 查看MySQL运行中的参数,以进行相关的设置。

4. 表类型的选择
根据自己的需求选择相应的数据库引擎。一般都是现在MyISAM或者InnoDB。

5.应用程序编程接口
5.1 使用持续的连接
5.2 不要查询应用中不需要的列,最好不用使用select * from table where…
5.3 对于where子句中的列(影响速度)建立索引,不推荐过多的建立索引,只建立有效的索引。不要在数据重复性很高的列上建立索引,比如:性别(男,女)字段上建立索引。
5.4 对表中的每个字段使用最有效的数据类型,比如:成绩字段,假如成绩的有效范围是0到100,就不要用int类型,用tinyint就已经足够了。
5.5 使用正确合适的数据类型,不要将数字存储为字符串。
5.6 如果可能,声明列为 NOT NULL。
5.7 在长char/vchar上建立索引时,不要建立full索引,应该选择合适的长度。
5.8 插入数据的时候,尽量使用一次插入多行。
5.9 联结一般比子查询速度快。
5.10 查询的时候如果满足条件的记录太多,记得使用limit。
5.11 少用通配符,通配符尽量不要用在开头。
5.12 学会使用explain, show processlist, show status, show variables。

上面是优化时的一些总结,多多交流。



发表评论

您的电子邮箱地址不会被公开。

35 + = 36