mysql性能基本调优

innodb_buffer_pool_size 80%(系统缓存池)

innodb_log_file_size    4G (mysql5.5中限定的最大数值,redo日志增大提高性能,redo日志小崩溃后恢复更快)

\\开始将这个值设置为512M可以拥有1G的的redo日志,会使得拥有充裕的写操作空间

max_connections 151(默认值,需要修改)

innodb_file_per_table OFF(默认将所有表的数据和索引存放在共享表空间,值为ON时会为每张表建立一个.ibd文件,好处在于对每个表进行drop、truncate或rebuild操作时会回收磁盘空间。但不会对数据库性能带来任何收益,在大量表情况下并不推荐这样做(10K+))

innodb_flush_log_at_trx_commit 1 (默认值,支持ACID特性,在主要关注点是数据安全时这个值是最合适的,但是对于IO(读写)速度较慢的系统,会带来巨大的开销。值为2时会导致不可靠,因为提交的事物仅仅每秒才flush一次到redo日志,值为0时的速度是最快的,但是在系统崩溃时可能会丢失一些数据,只适用于备份节点)

innodb_flush_method fdatasync (在有硬件raid控制器,并且独立缓存采用write-back机制,有电池断电保护时,配置成O_DIRECT,否则,设置为fdatasync)

innodb_log_buffer_size 1M (默认值,这项配置决定了为尚未执行的事物分配的缓存,默认值一般够用。如果事物中包含大量二进制大对象或者大文本字段的话,缓存会很快被填满并触发额外的IO,查看innodb_log_waits状态,不如不为0,增加)

query_cache_size (查询缓存,最佳方法是一开始就停用,设置该值为0,并利用其他方法加速查询,优化索引,增加拷贝分散负载或者启用额外的缓存)

log_bin

skip_name_resolve

skip-locking (避免mysql的外部锁定,减少出错几率增强稳定性)

back_log=500 (这个值指出在mysql暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。如果在一个短时间内有很多连续,增大这个值。这个值制定到来的TCP/IP链接的侦听队列的大小.linux系统推荐设置为小于512的数字,跟系统本身的listen函数backlog大小有关)

key_buffer_size = 256M (指定索引的缓冲大小,增加客源得到更好的索引处理性能。该数值设置的过大会使服务器整体效率降低)

sort_buffer_size = 6M (查询排序时所能使用的缓冲区大小,每连接独占。)

wait_timeout = 10 (指定一个请求的最大链接时间)

提升性能的建议:

1.如果opened_tables太大,应该把my.cnf中的table_cache变大

2.如果Key_reads太大,则应该把my.cnf中key_buffer_size变大.可以用Key_reads/Key_read_requests计算出cache失败率

3.如果Handler_read_rnd太大,则你写的SQL语句里很多查询都是要扫描整个表,而没有发挥索引的键的作用

4.如果Threads_created太大,就要增加my.cnf中thread_cache_size的值.可以用Threads_created/Connections计算cache命中率

5.如果Created_tmp_disk_tables太大,就要增加my.cnf中tmp_table_size的值,用基于内存的临时表代替基于磁盘的

系统级别优化:

vi /etc/fstab下

noatime

确保在文件系统上禁用 atime 日志记录特性。atime 是最近访问文件的时间,每当访问文件时,底层文件系统必须记录这个时间戳。因为系统管理员很少使用 atime,禁用它可以减少磁盘访问时间。禁用这个特性的方法是,在 /etc/fstab 的第四列中添加 noatime 选项。  ---需要remount。

mount -o remount,rw / 效果很明显

内存配置:numa=off

另外可以设置 vm.zone_reclaim_mode=0尽量回收内存

IO调度器修改:

scheduler:/sys/block/sda/queue/scheduler   //sda == {DEVICE-NAME}

nr_requests:/sys/block/sda/queue/nr_requests  //磁盘队列长度

read_ahead_kb:/sys/block/sda/queue/read_ahead_kb  //减少预读

mysql性能基本调优,布布扣,bubuko.com

时间: 2024-10-25 16:18:24

mysql性能基本调优的相关文章

mysql性能呢个调优之max_allowed_packet

mysql根据配置文件会限制server接受的数据包大小. 有时候大的插入和更新会被max_allowed_packet 参数限制掉,导致失败. 查看目前配置 show VARIABLES like '%max_allowed_packet%'; 显示的结果为: +--------------------+---------+ | Variable_name      | Value   | +--------------------+---------+ | max_allowed_packe

MySQL数据库参数调优方法

怎么配置MySQL服务器,但考虑到服务器硬件配置的不同,具体应用的差别,那些文章的做法只能作为初步设置参考,我们需要根据自己的情况进行配置优化,好的做法是MySQL服务器稳定运行了一段时间后运行,根据服务器的”状态”进行优化. 注:参数的调整可以通过修改 /etc/my.cnf 文件并重启 MySQL 实现.这是一个比较谨慎的工作,你可以根据你自己主机的硬件情况(特别是内存大小)进一步修改. mysql> show global status;  可以列出MySQL服务器运行各种状态值,另外,查

MySQL 数据库规范--调优篇(终结篇)

前言 这篇是MySQL 数据库规范的最后一篇--调优篇,旨在提供我们发现系统性能变弱.MySQL系统参数调优,SQL脚本出现问题的精准定位与调优方法. 目录 1.MySQL 调优金字塔理论 2.MySQL 慢查询分析--mysqldumpslow.pt_query_digest工具的使用(SQL脚本层面) 3.选择合适的数据类型 4.去除无用的索引--pt_duplicate_key_checker工具的使用(索引层面) 5.反范式化设计(表结构) 6.垂直水平分表 7.MySQL 重要参数调优

Linux系统 MySQL 运行状态及调优

MySQL 运行状态及调优 1.查看MySQL服务器配置信息mysql> show variables; 2.查看MySQL服务器运行的各种状态值mysql> show global status; 3.慢查询mysql> show variables like '%slow%'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | log_slow_queries |

《linux性能及调优指南》 3.5 网络瓶颈

3.5 Network bottlenecks A performance problem in the network subsystem can be the cause of many problems, such as a kernel panic. To analyze these anomalies to detect network bottlenecks, each Linux distribution includes traffic analyzers. 网络子系统的性能问题

《Linux 性能及调优指南》写在后面的话

感谢飞哥的翻译. 目前飞哥 (http://hi.baidu.com/imlidapeng)的网址已经不能访问了. <Linux 性能及调优指南>这本书的原文地址:http://www.redbooks.ibm.com/abstracts/redp4285.html也不能访问了. 在此更新https://lenovopress.com/redp4285.pdf 我在网上只查到飞哥翻译了1,2,3章,第四章还未翻译.如果最近工作时间允许的话,我在翻译完smb.conf之后可以看看本书第四章!!

mysql性能瓶颈分析、性能指标、指标搜集方法与性能分析调优工具

本文主要讲解mysql的性能瓶颈分析.性能指标.性能指标信息的搜集工具与方法.分析调优工具的使用. 文章尚未完成. 性能瓶颈: 慢.写速度比读速度慢很多  主要的性能指标: 访问频度, 并发连接量, 缓存命中率, index使用, slow log开启与分析, query Log,查询log Threads_cached:连接线程缓存是否开启  -> ONthread_cache_size :线程缓存数的大小query_cache_size: 查询缓存大小join_buffer_size :jo

PHP Nginx MySQL 高并发调优 小试

项目要求实现一个免费抢券的功能,涉及到高并发的问题,研究了几天,记录下来,欢迎工友们扔砖头~~ 整个项目是PHP+Nginx+Mysql的架构,由于PHP是阻塞的单线程模型,不支持多线程,因此也没有Java那么好用的同步机制,我想到的办法就是在数据库级别做相应的同步互斥的控制,Mysql的锁机制我放在了Mysql数据库锁机制这篇博文当中.通过查看Mysql官方文档,我想到了两种解决方案:一.使用LOCK TABLE 或START TRANSACTION 写SQL 语句: 二.使用CREATE P

mysql操作与调优

一.mysql一些基本操作用法 1. 忘记root密码编辑mysql主配置文件 my.cnf 在[mysqld]字段下添加参数  skip-grant  ,重启数据库服务,这样就可以进入数据库不用授权了 mysql -uroot ,修改相应用户密码 use mysql; update user set password=password('your password') where user='root';flush privileges;  最后修改/etc/my.cnf 去掉 skip-gr