2013年5月13日星期一
mysql数据库执行效率低的原因分析
参考连接:
http://coolin228.wordpress.com/2009/09/02/zt%E6%95%B0%E6%8D%AE%E5%BA%93%E6%89%A7%E8%A1%8C%E6%95%88%E7%8E%87%E4%BD%8E%E5%8E%9F%E5%9B%A0%E5%88%86%E6%9E%90/
1、没有索引
2、查询方法不是最优
3、查询语句不是最优
4、查询出的数据量过大
5、I/O吞吐量小,形成了瓶颈效应
6、内存不足
7、网络速度慢
8、引擎是innodB,打开了autocommit,而且程序没有显式调用BEGIN 开始事务,导致每插入一条都自动Commit
9、锁或者死锁
10、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源
可以通过如下方法来优化查询 :
1)把数据、日志、索引放到不同的I/O设备上,增加读取速度,以前可以将Tempdb应放在RAID0上,SQL2000不在支持。数据量(尺寸)越大,提高I/O越重要.
2)纵向、横向分割表,减少表的尺寸(sp_spaceuse)
3)升级硬件
4)根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。注意填充因子要适当(最好是使用默认值0)。索引应该尽量小,使用字节数小的列建索引,不要对有限的几个值的字段建单一索引如性别字段
5)提高网速;
6)扩大服务器的内存,Windows 2000和SQL server 2000能支持4-8G的内存。配置虚拟内存:虚拟内存大小应基于计算机上并发运行的服务进行配置。运行 Microsoft SQL Server 2000 时,可考虑将虚拟内存大小设置为计算机中安装的物理内存的 1.5 倍。如果另外安装了全文检索功能,并打算运行 Microsoft 搜索服务以便执行全文索引和查询,可考虑:将虚拟内存大小配置为至少是计算机中安装的物理内存的 3 倍。将 SQL Server max server memory 服务器配置选项配置为物理内存的 1.5 倍(虚拟内存大小设置的一半)。
订阅:
博文评论 (Atom)
没有评论:
发表评论