`
lfg07lfg
  • 浏览: 14417 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

my.ini(my.cnf)与mysql优化指南

 
阅读更多

my.ini(my.cnf)与mysql优化指南
2011年12月21日
  核心提示:1、虽然这里写的32000。但实际MySQL服务器允许的最大连接数16384;2、除max_connections外,上述其他配置应该根据你们系统自身需要进行配置,不必拘泥;3、添加了最大允许连接数,对系统消耗增加不大。4、如果你的mysql用的是my.ini作配置文件,设置类似,但设置的格式
  mysql优化了
  所以先说说这个,其实这个,很复杂,对于不同的网站,其在线,访问量,帖子数量,网络情况,以及机器配置
  都有关系,优化不是一次可以完成的,需要不断的观察和调试,以取得最佳效果
  下面我引用 Asiwish和老高的两篇优化措施,给大家看看
  这些设置,只要通过修改 win2000的c:/winnt/my.ini 或者 win2003的 c:/windows/my.ini 来实现
  首先,我们打开这个文件,先将最底部的密码项改成其它的,这个对数据库本身没影响,主要是防止一些有心人获取这个密码,对我们不利
  然后大家看看两个例子,其中一些设置,略懂的英文的,即明白是什么意思,
  不懂得可以去查单词,我懒得一个个对照写说明了
  一个是 千人在线,1G内存的
  #This File was made using the WinMySQLAdmin 1.4 Tool
  #2004-2-23 16:28:14
  #Uncomment or Add only the keys that you know how works.
  #Read the MySQL Manual for instructions
  [mysqld]
  basedir=D:/mysql
  #bind-address=210.5.*.*
  datadir=D:/mysql/data
  #language=D:/mysql/share/your language directory
  #slow query log#=
  #tmpdir#=
  #port=3306
  set-variable = max_connections=1500
  skip-locking
  #skip-networking
  set-variable = key_buffer=384M
  set-variable = max_allowed_packet=1M
  set-variable = table_cache=512
  set-variable = sort_buffer=2M
  set-variable = record_buffer=2M
  set-variable = thread_cache=8
  # Try number of CPU’s*2 for thread_concurrency
  set-variable = thread_concurrency=8
  set-variable = myisam_sort_buffer_size=64M
  #set-variable = connect_timeout=5
  #set-variable = wait_timeout=5
  server-id = 1
  [isamchk]
  set-variable = key_buffer=128M
  set-variable = sort_buffer=128M
  set-variable = read_buffer=2M
  set-variable = write_buffer=2M
  [myisamchk]
  set-variable = key_buffer=128M
  set-variable = sort_buffer=128M
  set-variable = read_buffer=2M
  set-variable = write_buffer=2M
  [WinMySQLadmin]
  Server=D:/mysql/bin/mysqld-nt.exe
  这个方案,整体够用了,但是在pconnect和最大连接数上,需要研究
  max_connections没必要那么大,我个人认为几百就够,否则给服务器加大了不少负担,经常会当机
  连接超时的设置也要根据实际情况调整,大家可以自由调整,然后观察效果如何。
  下面是老高两年前的一些建议,大家参考一下
  7、MYSQL 的优化(/etc/my.cnf)
  1)确认在“[mysqld]”部分加入了“skip-innodb”和“skip-bdb”参数;
  2)确认在“[mysqld]”部分加入了“skip-name-resolve”和“skip-locking”参数;
  3)如果不需要的话,可以将二进制日志(binlog)停掉,方法是将“log-bin”注释掉;
  4)在内存允许的情况下,对一些参数进行重新配置,目标在于将大部分操作集中于内存中,尽量不进行磁盘操作,对于我的 MYSQL 服务器我是如下修改的,基于 2G 内存情况:
  [mysqld]
  set-variable = key_buffer=512M
  set-variable = max_allowed_packet=4M
  set-variable = table_cache=1024
  set-variable = thread_cache=64
  set-variable = join_buffer_size=32M
  set-variable = sort_buffer=32M
  set-variable = record_buffer=32M
  set-variable = max_connections=512
  set-variable = wait_timeout=120
  set-variable = interactive_timeout=120
  set-variable = max_connect_errors=30000
  set-variable = long_query_time=1
  set-variable = max_heap_table_size=256M
  set-variable = tmp_table_size=128M
  set-variable = thread_concurrency=8
  set-variable = myisam_sort_buffer_size=128M
  你可以根据“show status”命令返回的状态进行微调。我主要注意以下变量的数值,越小越好,最好为零:)
  Created_tmp_disk_tables
  Created_tmp_tables
  Created_tmp_files
  Slow_queries
  另外 mysql wait_timeout 那个值设置大了没用 做10左右就可了 (大C说得)
  wait_timeout是使用长久连线时 空闲进程的控制 只要数据库在连接状态 他是不进行干预的 不管是否有查询或更新操作 把这个设置小一点 再使用pconnect就比较理想了 
  
  
  timeout的
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics