- 浏览: 1019847 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (529)
- 服务器 (8)
- jsp (1)
- java (6)
- AIX (1)
- solaris (3)
- linux学习 (53)
- javaScript (2)
- hibernate (1)
- 数据库 (74)
- sql语句 (8)
- oracle 学习 (75)
- oracle 案例 (42)
- oracle 管理 (42)
- Oracle RAC (27)
- oracle data guard (12)
- oracle 参数讲解 (14)
- Oracle 字符集 (8)
- oracle性能调优 (24)
- oracle备份与恢复 (12)
- oracle Tablespace (9)
- oracle性能诊断艺术 (1)
- oracle 11g学习 (5)
- oracle streams (1)
- oracle upgrade and downgrade (4)
- db2学习 (13)
- db2命令学习 (2)
- mysql (28)
- sql server (30)
- sql server 2008 (0)
- 工具 (10)
- 操作系统 (3)
- c++ (1)
- stock (1)
- 生活 (5)
- HADOOP (2)
最新评论
-
massjcy:
...
如何将ubuntu文件夹中文名改为英文 -
skypiea:
谢谢。。。
终于解决了。。。
Oracle 10.2.0.4(5)EM不能启动的解决方案(Patch 8350262) -
qwe_rt:
引用vi /etc/sysconfig/network 请问 ...
Linux操作系统下配置静态IP上网 -
liuqiang:
sudo killall -9 apache2
ps 和 kill 命令详解 -
dazuiba:
引用*绝杀 kill -9 PID 当使用此命令时,一定要通过 ...
ps 和 kill 命令详解
优化数据库最核心的实际上就是配置参数的调整。本文通过一个简单的参数调整,实现了对拥有一个几十万行表的 group by 优化的例子。通过这个简单的调整,数据库性能有了突飞猛进的提升。
本例子是针对 MySQL 调整的,不像其他商业数据库,MySQL 没有视图,特别是 Oracle 可以利用固化视图来提升查询性能,没有存储过程,因此性能的调整几乎只能通过配置合适的参数来实现。
调整的具体步骤(例子针对 pLog 0.3x 的博客系统):
发现最多的 slow log 是:
SELECT category_id, COUNT(*) AS ‘count’ FROM plog_articles WHERE blog_id = 2 AND status = ‘PUBLISHED’ group by category_id;
一般在 20s 以上,甚至 30s 。
而当 blog_id=1 或者其他时,都能很快的选出结果。
于是怀疑索引有问题,重新建立索引,但无济于事。 EXPLAIN 结果如下:
mysql> EXPLAIN SELECT category_id, COUNT(*) AS ‘count’ FROM plog_articles WHERE blog_id = 2 AND status = ‘PUBLISHED’ group by category_id;
+—————+——+——————+——————+———+————-+——+———————————————-+
| table | type | possible_keys | key | key_len | ref | rows | Extra |
+—————+——+——————+——————+———+————-+——+———————————————-+
| plog_articles | ref | idx_article_blog | idx_article_blog | 5 | const,const | 4064 | Using where; Using temporary; Using filesort |
+—————+——+——————+——————+———+————-+——+———————————————-+
1 row in set (0.00 sec)
于是想到每次查看 blog_id = 2 的博客时,系统负载就提高,有较高的 swap 。于是查看 temporary table 有关的资料,果然有这样的说法:
If you create a lot of disk-based temporary tables, increase the size of tmp_table_size if you can do so safely. Keep in mind that setting the value too high may result in excessive swapping or MySQL running out of memory if too many threads attempt to allocate in-memory temporary tables at the same time. Otherwise, make sure that tmpdir points to a very fast disk that’s not already doing lots of I/O.
Another problem that doesn’t show up in the slow query log is an excessive use of disk-based temporary tables. In the output of EXPLAIN, you’ll often see Using temporary. It indicates that MySQL must create a temporary table to complete the query. However, it doesn’t tell you whether that temporary table will be in memory or on disk. That’s controlled by the size of the table and MySQL’s tmp_table_size variable.
If the space required to build the temporary table is less than or equal to tmp_table_size, MySQL keeps it in memory rather than incur the overhead and time required to write the data to disk and read it again. However, if the space required exceeds tmp_table_size, MySQL creates a disk-based table in its tmpdir directory (often /tmp on Unix systems.) The default tmp_table_size size is 32 MB.
To find out how often that happens, compare the relative sizes of the Created_tmp_tables and Created_tmp_disk_tables counters:
调整 tmp_table_size为 80M 左右后,以上语句 14s 即可解决。
发表评论
-
MySQL全连接(Full Join)实现
2012-07-09 18:18 4216MYSQL 可以用 union 实现全连接 mysql> ... -
Mysql Query Cache学习篇
2012-03-19 14:32 962基础介绍篇: QueryCache是用来缓存select语句 ... -
MySQL Query Cache 小结
2012-03-19 14:31 680本文转自:http://isky000.com/databas ... -
max_length_for_sort_data
2012-03-08 11:11 1394这段时间mysql 数据库的性能明显降低,iowait达到了 ... -
BlackHole :黑洞引擎
2012-02-03 14:42 1152BlackHole :黑洞引擎,写入的任何数据都会消失,用于记 ... -
正确重置MySQL密码
2012-02-03 00:51 744谁都不想弄丢家门钥匙,但不管多么小心,时间长了,这样的事情总会 ... -
MYSQL--my.cnf配置中文详解
2012-02-02 22:55 925mysqld程序--目录和文件 ... -
MYSQL EXPLAIN
2012-02-01 20:24 898对于经常使用mysql的兄弟们,对explain一定不会 ... -
基于MySQL的高可用可扩展架构探讨(转)
2011-03-24 23:38 810随着信息量飞涨,信息的存储成为了这个时代至关重要的一项技术。如 ... -
MySQL性能优化的参数简介
2011-03-24 23:18 697公司网站访问量越来越 ... -
mysql replication原理介绍
2011-03-24 23:04 1031要想用好一个系统,理解其实现原理是非常重要的事情,只有理解了其 ... -
如何为用户设置密码
2011-03-24 22:27 753当初次在机器上安装完Mysql时,你可以匿名进行访问数据库或者 ... -
MySQL数据的导出和导入工具:mysql
2011-03-24 22:24 750导出要用到MySQL的mysqldum ... -
How to Backup a MyISAM / InnoDB MySQL Database
2011-03-24 22:19 939Whichever MySQL storage engine ... -
加大mysql的最大连接数
2011-03-24 22:10 825mysql的最大连接数默认是100, 这个数值对于并发连接很多 ... -
MySQL服务器安装完之后如何调节性能
2011-03-24 22:04 696My favorite question during Int ... -
Mysql 占用cpu资源高
2011-03-24 21:44 1157朋友主机(Windows 2003 + IIS ... -
MySQL慢查询分析mysqldumpslow
2011-03-24 21:40 1046MySQL优化的第一步应该做的就是排查问题,找出瓶颈,而通常情 ... -
打开MySQL的慢查询记录
2011-03-24 21:38 916打开MySQL慢查询MySQL慢查询记录日志对于跟踪PHP+M ... -
MySQL Back to Basics:Analyze,Check,Optimize, and Repair
2011-03-24 01:33 874It felt like the right time for ...
相关推荐
### MySQL性能优化与SQL优化方法技巧 #### 一、引言 MySQL作为一款广泛使用的开源关系型数据库管理系统,其性能优化对于确保应用系统的稳定性和高效运行至关重要。通过对MySQL的优化,不仅能提升系统的响应速度,还...
### MySQL性能优化详解 #### 一、什么是MySQL优化? MySQL优化是指通过合理安排资源和调整系统参数,使得MySQL运行得更快、更节省资源的过程。优化的目的在于减少系统瓶颈,降低资源消耗,提升系统的响应速度。 #...
本文将围绕《构建高性能Web站点》一书中有关MySQL性能优化的部分内容进行详细解读,帮助读者更好地理解和掌握MySQL性能优化的方法和技术。 #### 二、友好的状态报告与正确使用索引 ##### 1. 友好的状态报告 - **...
MySQL性能优化是一门深奥的技术,旨在通过调整和调整数据库的配置参数,来提高数据库的性能和效率。《MySQL性能优化权威指南》这本书深入地介绍了如何在实际应用中实现MySQL性能的优化。本书详细讲述了数据库连接池...
### MySQL性能优化概述 在数据库管理系统(DBMS)领域中,MySQL因其卓越的性能、可靠性和易用性而被广泛采用。随着应用系统的扩展和数据量的增长,对MySQL进行性能优化变得至关重要。本文将深入探讨MySQL性能优化的...
MySQL性能优化是数据库管理中的重要环节,特别是在处理大量数据时,高效的SQL语句能显著提升系统性能。以下是一些关于SQL语句性能优化的关键知识点: 1. **LIMIT使用**: LIMIT子句常用于限制查询返回的结果数量,...
MySQL DBA 性能优化文档每天必看 MySQL DBA 性能优化是一个复杂的过程,需要根据实际情况进行调整和优化。简单地按照某个方案配置 MySQL 是不行的,因为 MySQL 的优化同 SQL Server 相比,更为麻烦与复杂。在优化 ...
MySQL性能优化是一个涉及多个方面的综合过程,包括但不限于SQL语句优化、索引管理、存储引擎选择等。通过合理的设计和持续的监控调优,可以显著提升数据库的性能,从而提高整个应用系统的响应速度和用户体验。对于...
根据给定文件的信息,我们可以提炼出关于MySQL性能优化的关键知识点,并进行详细阐述: ### 一、MySQL的认识 #### 1.1 架构与组成部分 MySQL作为一款广泛使用的开源关系型数据库管理系统,其架构主要分为客户端和...
本篇文章将从多个角度探讨MySQL性能优化的方法与策略。 #### 1. 为查询缓存优化你的查询 查询缓存是MySQL中一种自动管理的机制,旨在通过存储重复查询的结果来减少对数据表的实际查询次数,从而显著提升性能。然而...
MySQL 查询性能优化 MySQL 查询性能优化是数据库管理和开发中非常重要的一方面。为了实现高性能,需要从多方面考虑,包括库表结构的设计、索引的建立、查询的设计等。只有合理的设计库表结构和索引,才能确保查询的...
MySQL性能提升是一个关键议题...整体而言,MySQL性能提升的知识点涵盖了从性能问题的识别和分析、并发控制机制的理解、SQL写法的优化到测试方法的运用等多个方面,强调了系统性能提升的多维度考虑和综合性的解决方案。
### MySQL实战性能优化 #### 一、什么是优化? 在MySQL中,优化是指通过合理地配置资源和调整系统参数,使得数据库能够更快地响应查询请求,同时尽可能减少资源消耗。优化的目标在于减少系统的瓶颈,降低资源占用...
### MySQL 5.6 性能优化 #### 目标 - **理解优化的概念:** 学习如何通过合理配置资源以及调整系统参数来提升 MySQL 的运行效率,并降低资源消耗。 - **掌握查询优化技巧:** 掌握一系列实用方法和技术来改善 SQL ...
### MySQL 5.6 性能优化 #### 目标 - **理解优化的概念:** 首先明确什么是优化,即如何通过合理地分配资源和调整系统参数来提升MySQL的运行速度,同时减少资源消耗。 - **掌握查询优化方法:** 学习并运用各种...
通过以上对MySQL性能优化方面的详细介绍,我们可以看到,合理运用这些技术和策略对于提高数据库的性能至关重要。希望本文能够帮助读者更好地理解和应用这些技术,从而有效地提升MySQL数据库的性能。