记一次mysql的优化

今天将外服的一个机器的mysql从5.0升级到5.5了,装完mysql5.5之后,很顺利的把5.0升级到了5.5,
但是在启动登陆服务器的时候,居然崩溃在一个连接的 的mysql c api里面。开始以为是mysql的库有问题,

在本地试试了,没发现问题, 怀疑是不是dll文件有问题,把本地的dll上传之后,问题依旧。。开始有点头大了。

看看了看日志,无意间把连接字符中localhost改为127.0.0.1之后居然好了。
开服之后,一切正常, 半个小时候之后,客服开始反应,在请求角色列表的时候,会卡很久,
从日志中发现,sql语句大量堆积,消息日志里没有堆积消息,可见是数据库性能有问题。

在启动mysql服务服务之前,曾由于配置文件有问题而没有直接用原来的配置文件,直接把my-huge.ini改名并加入日志等配置信息,

想着官方的默认也够用了,没和之前的配置文件信息做对比就启动服务了。

后来仔细的对比之后 ,一个个变量设置, 到 set global innodb_flush_logs_at_trx_commit =0 的时候,忽然发现几千条的sql语句堆积突然变为0了,

那个激动啊,在网上找到的解释如下:

innodb_flush_logs_at_trx_commit=2: 该参数设定了事务提交时内存中log信息的处理。
1) =1时,在每个事务提交时,日志缓冲被写到日志文件,对日志文件做到磁盘操作的刷新。Truly ACID。速度慢。
2) =2时,在每个事务提交时,日志缓冲被写到文件,但不对日志文件做到磁盘操作的刷新。只有操作系统崩溃或掉电才会删除最后一秒的事务,不然不会丢失事务。
3) =0时, 日志缓冲每秒一次地被写到日志文件,并且对日志文件做到磁盘操作的刷新。任何mysqld进程的崩溃会删除崩溃前最后一秒的事务
由于在我们游戏服务器中 没有用到事物的处理, 直接设置为0, 性能提升至少20倍。

猜你喜欢

转载自blog.csdn.net/suzhijie325/article/details/7734144