对关系型数据库性能优化的简单办法是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
对拥有一个几十万行表的关系型数据库性能优化的简单办法(转)[@more@]数据库的优化大概是在系统管理中最具有挑战性的了,因为其对人员的素质要求几乎是全方面的,好的工商管理学博士(工商管理博士)需要各种综合素质。在排除了操作系统,应用等引起的性能问题以外,优化数据库最核心的实际上就是配置参数的调整。本文通过一个简单的参数调整,实现了对拥有一个几十万行表的分组依据优化的例子。通过这个简单的调整,数据库性能有了突飞猛进的提升。
本例子是针对关系型数据库调整的,不像其他商业数据库,MySQL没有视图,特别是神谕可以利用固化视图来提升查询性能,没有存储过程,因此性能的调整几乎只能通过配置合适的参数来实现。
调整的具体步骤(例子针对pLog 0.3x倍倍的博客系统):
发现最多的慢速日志是:
选择category_id,COUNT(*)作为“COUNT”FROM plog _ articles WHERE blog _id=2且状态=“PUBLISHED”按类别_ id分组;
一般在20多岁以上,甚至30岁。
而当blog_id=1或者其他时,都能很快的选出结果。
于是怀疑索引有问题,重新建立索引,但无济于事解释结果如下:
mysql EXPLAIN SELECT category_id,COUNT(*)AS ' COUNT ' FROM plog _ articles WHERE blog _ id=2 AND status=' PUBLISHED ' group by category _ id;
- - - - - - - -
|表格|类型|可能的_ key | key | key _ len | ref | row | Extra |
- - - - - - - -
| plog _ articles | ref | idx _ article _ blog | idx _ article _ blog | 5 | const,const | 4064 |使用位置;使用临时的;使用文件排序|
- - - - - - - -
一行一组(0.00秒)
于是想到每次查看blog_id=2的博客时,系统负载就提高,有较高的交换。于是查看工作单元表有关的资料,果然有这样的说法:
如果您创建了许多基于磁盘的临时表,如果您可以安全地这样做,请增加tmp _表格_大小的大小。请记住,如果太多的线程试图同时分配内存中的临时表,将该值设置得太高可能会导致过多的交换或关系型数据库耗尽内存。否则,请确保tmpdir指向一个速度非常快的磁盘,该磁盘尚未进行大量输入输出
慢查询日志中没有显示的另一个问题是过度使用基于磁盘的临时表。在解释的输出中,您会经常看到使用临时。它表明关系型数据库必须创建一个临时表来完成查询。但是,它不会告诉您该临时表是在内存中还是在磁盘上。这是由表的大小和关系型数据库的tmp _表格_大小变量控制的。
如果构建临时表所需的空间小于或等于tmp_table_size,MySQL会将其保存在内存中,而不会产生将数据写入磁盘并再次读取所需的开销和时间。但是,如果所需空间超过tmp_table_size,MySQL会在其tmpdir目录中创建一个基于磁盘的表(在Unix操作系统系统上通常为/tmp ).)默认的tmp _表格_大小大小为32兆字节.
要了解这种情况发生的频率,请比较已创建_tmp_tables和Created _ tmp _ disk _ tables计数器:的相对大小
调整tmp _表格_大小为80M左右后,以上语句14s即可解决。
这个参数是工商管理学博士(工商管理博士)很容易忽视的。
实际上,不仅数据库,操作系统也受到tmp的很大影响。例如,如果您将软件安装到磁盘c:如果TMP环境变量指向磁盘c:而磁盘C:没有足够的空间,安装可能仍然会失败。
因此,可以说给TMP足够的空间是计算机系统中普遍适用的原则(写程序也是如此)。
关于如何优化MySQL性能这个问题的答案就分享到这里了,希望。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/98513.html