my.ini与mysql优化示例分析

网友投稿 419 2023-11-29

my.ini与mysql优化的示例分析

小编给大家分享一下my.ini与mysql优化的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

my.ini与mysql优化的示例分析

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-f)

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的時間﹐我的經驗值是5-20﹐看你的SERVER的訪問量了~~ (梦飞说的)

访问量越大 这个值就应该越小 否则留出的空闲进程太多 会占用不必要的内存

在一个15分钟在线3000人的论坛上 设置为3比较合适 同时打开pconnect

另外,我再引用一篇文章

数据库连接过多的错误,可能的原因分析及解决办法

分析

系统不能连接数据库,关键要看两个数据:

1、数据库系统允许的最大可连接数max_connections。这个参数是可以设置的。如果不设置,默认是100。最大是16384。

2、数据库当前的连接线程数threads_connected。这是动态变化的。

查看max_connections、max_connections的办法见后。

如果 threads_connected == max_connections 时,数据库系统就不能提供更多的连接数了,这时,如果程序还想新建连接线程,数据库系统就会拒绝,如果程序没做太多的错误处理,就会出现类似强坛的报错信息。

因为创建和销毁数据库的连接,都会消耗系统的资源。而且为了避免在同一时间同时打开过多的连接线程,现在编程一般都使用所谓数据库连接池技术。

但数据库连接池技术,并不能避免程序错误导致连接资源消耗殆尽。

这种情况通常发生在程序未能及时释放数据库连接资源或其他原因造成数据库连接资源不能释放,但强坛系统估计不会发生这种低级的编程错误。

该错误的简便的检查办法是,在刷新强坛页面时,不断监视threads_connected的变化。如果max_connections足够大,而threads_connected值不断增加以至达到max_connections,那么,就应该检查程序了。当然,如果采用数据库连接池技术,threads_connected增长到数据库连接池的最大连接线程数时,就不再增长了。

从强坛出错的情况看,更大的可能性是数据库系统没能进行适当地配置。下面提出一点建议。供参考

让你们的工程师把MySQL的最大允许连接数从默认的100调成32000。这就不会老出现连接过多的问题了。

查看max_connections

进入MySQL,用命令:show variables

查看数据库最大可连接数的变量值:max_connections

查看threads_connected

进入MySQL,用命令:show status

查看当前活动的连接线程变量值:threads_connected

设置max_connections

设置办法是在my-f文件中,添加下面的最后红色的一行:

——————————————————————————–

[mysqld]

port=3306

#socket=MySQL

skip-locking

set-variable = key_buffer=16K

set-variable = max_allowed_packet=1M

set-variable = thread_stack=64K

set-variable = table_cache=4

set-variable = sort_buffer=64K

set-variable = net_buffer_length=2K

set-variable = max_connections=32000

——————————————————————————–

修改完毕后,重启MySQL即可。当然,为了确保设置正确,应该查看一下max_connections。

注意:

1、虽然这里写的32000。但实际MySQL服务器允许的最大连接数16384;

2、除max_connections外,上述其他配置应该根据你们系统自身需要进行配置,不必拘泥;

3、添加了最大允许连接数,对系统消耗增加不大。

4、如果你的mysql用的是my.ini作配置文件,设置类似,但设置的格式要稍作变通。

可见,mysql的优化,是多样化,且根据环境不同,必须灵活调整的

以上是“my.ini与mysql优化的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:mysql中如何实现全国省市级联数据sql语句
下一篇:数据库中优化SQL的方法是什么
相关文章

 发表评论

暂时没有评论,来抢沙发吧~