flyonok

统计

留言簿(7)

ACE

book

boost

bsd

c study

c++

code download

codeblock

computer clound

Eclipse

embed system

erlang

ET++

gtk

ic card

java

KDE

libevent

linux

linux--MM

mysql

network education

one card

oracle

pcap relation

php

powerbuilder

python

QT

software config

software test

SQL server

UML

wireless

wxwidgets

陈宾

阅读排行榜

评论排行榜

Mysql Tuning tools

来源:http://www.tuifei.com/2007/07/18/mysql-tuning-tools.htm

最近朋友的网站由于用户量上升及其他原因,使得mysql数据库性能出现严重问题,导致用户无法正常登录及使用。
为了找出性能问题的根结,Google了很多,最后从以下方面入手:
1. 配置mysql log_slow_queries 功能
输出哪些耗时的sql语句到日志中,使用mysqldumpslow去统计,从而确定是哪些应用的数据库查询影响了数据库性能。
log_slow_queries在my.cnf的配置,示例如下:
log_slow_queries
long_query_time = 2
log_long_format

mysqldumpslow 的使用,到日志所在目录,执行:
# mysqldumpslow ./www-slow.log

2. 利用mytop实时查看mysql的负载情况
mytop的最新版本为1.6,mytop-1.6.tar.gz的安装需要以下软件包支持:
DBI-1.58.tar.gz
TermReadKey-2.30.tar.gz
DBD-mysql-4.005 
此软件安装比较简单,可以参照readme即可。
一下是安装中常会出现的问题:
如果运行mytop时出现以下错误:
1) mysql.so: undefined symbol: DBIc_TRACE_LEVEL
基本上确定是DBI及DBD-mysql的版本不匹配造成的,
详见:
http://www.cpanforum.com/posts/5528

2) Segmentation fault
基本上确定是由于TermReadKey版本和mytop要求不匹配造成的,
详见:
http://www.webhostingtalk.com/archive/index.php/t-429329.html

在找到有问题的sql语句後,对my.cnf也做了相应的处理,主要是参考my-huge.cnf,内容如下,欢迎对此配置进行讨论:
# cat my.cnf

  1. [client]
  2. port            = 3306
  3. socket          = /tmp/mysql.sock
  4. [mysqld]
  5. port            = 3306
  6. socket          = /tmp/mysql.sock
  7. skip-locking
  8. key_buffer = 384M
  9. max_allowed_packet = 1M
  10. table_cache = 512
  11. sort_buffer_size = 4M
  12. read_buffer_size = 4M
  13. net_buffer_length = 64K
  14. read_rnd_buffer_size = 8M
  15. myisam_sort_buffer_size = 64M
  16. max_connections = 1500
  17. max_connect_errors = 1500
  18. query_cache_size = 64M
  19. thread_cache_size = 8
  20. thread_concurrency = 8
  21. #log_slow_queries
  22. #long_query_time = 5
  23. #log_long_format
  24. [mysqldump]
  25. quick
  26. max_allowed_packet = 16M
  27. [mysql]
  28. no-auto-rehash
  29. [isamchk]
  30. key_buffer = 256M
  31. sort_buffer_size = 256M
  32. read_buffer = 2M
  33. write_buffer = 2M
  34. [myisamchk]
  35. key_buffer = 256M
  36. sort_buffer_size = 256M
  37. read_buffer = 2M
  38. write_buffer = 2M
  39. [mysqlhotcopy]
  40. interactive-timeout

经过测试发现key_buffer及query_cache_size 对mysql性能影响较大。

另外,发现mysq在linux下高负载运行时,kswapd会经常出来捣乱,致使情况变得更糟。系统load average会急剧升高,直至mysql没有任何响应。
对此感兴趣的可以搜索 mysql+kswapd
如以下讨论:
http://www.ale.org/archive/ale/ale-2001-09/msg00149.html
http://bugs.mysql.com/bug.php?id=28751

posted on 2010-11-25 16:43 flyonok 阅读(287) 评论(0)  编辑 收藏 引用 所属分类: mysql


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理