重要的几个mysql参数优化(5.7)

mysql参数介绍

本文章只针对innodb引擎,myisam暂不做介绍

port
//默认:3306
//mysql服务端默认监听(listen on)的TCP/IP端口

basedir
//基准路径,其他路径都相对于这个路径

datadir
//mysql数据库文件所在目录

character-set-server
//默认:latin1
//服务端使用的字符集默认为8比特编码的latin1字符集

default-storage-engine=INNODB
//创建新表时将使用的默认存储引擎

sql-mode
//默认值:ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
//定义了MySQL支持的sql语法,对数据的校验等,是一个非常重要的系统变量,由一组MODE组成,不同的MODE控制着Mysql不同的行为

max_connections
//默认:151
//mysql服务器支持的最大并发连接数(用户数)。但总会预留其中的一个连接给管理员使用超级权限登录,即使连接数目达到最大限制。如果设置得过小而用户比较多,会经常出现“Too many connections”错误。

innodb_buffer_pool_size
//对InnoDB的效率影响很大。因为InnoDB会把尽可能多的行数据和索引缓存在缓冲区,该值设置的越大,则磁盘IO越少,一般将该值设为物理内存的70-80%。
当然,如果数据量不会暴增并且不是特别大,这个参数还是不要太大了,浪费空间。

innodb_thread_concurrency
//默认:0(不限制)
//InnoDB内核处理用户事物的最大并发线程数
 
innodb_log_file_size
//每一个InnoDB事务日志的大小,在高写入负载尤其是数据集很大的时候,这个值非常重要,值越高性能越好,不过可能会增加数据恢复的时候。我设置为128M。
 
innodb_log_buffer_size
//默认:2M
//默认的设置在中等强度的写入负载及短事物处理时,性能还可以。但是存在大量更新操作或者负载较大时,就要慢慢增加这个参数的值了。不过不要设置太大,会浪费内存。它每秒都会刷新一次,所以不用设置超过1s所需的内存空间,16M足够了。
//这个取决于你的业务写入并发和每次写入的数据量来的,如果写频率不高且每次写入数据量不大建议降低这个值,避免浪费内存

innodb_flush_logs_at_trx_commit
//这个参数对InnoDB及其重要,设置不好的话会比MyISAM慢1000倍!默认是1,这就是说每次更新事务都会被提交到磁盘,这是非常消耗资源的,硬盘和内存的速度是明显数量级的差距。
//设置为0是最快的,但是很不安全,全部在缓存中,一掉电全没了。
//设置为1很不好,每次都去写硬盘,没有必要。
//设置为2是比较好的,日志不刷新到磁盘上,只刷新到操作系统缓存上。然后每秒钟写缓存。相对于现在数据库每秒4K条左右的SQL,性能已经可以提高不少。

key_buffer_size
//含义:用于索引块的缓冲区大小,增加它可得到更好处理的索引(对所有读和多重写)。
//影响:对于MyISAM表的影响不是很大,MyISAM会使用系统的缓存来存储数据,所以大量使用MyISAM表的机器内存很快就会耗尽。但是,如果你将该值设得过大(例如,大于总内存的50%),系统将转换为页并变得极慢。MySQL依赖操作系统来执行数据读取时的文件系统缓存,因此你必须为文件系统缓存留一些空间。
//建议:先设置为内存的25%,观察性能变化。

table_open_cache
//含义:为所有线程打开表的数量。
//影响:增加该值能增加mysqld要求的文件描述符的数量。可以避免频繁的打开数据表产生的开销。打开一个表的开销可能很大,因为MyISAM会把MYI文件的文件头标识为正在使用,所以在内存中做这个操作比较好。,因为每个线程都需要打开表,连接数越大这个值要越大。
//建议:我们有300多个表的话,大约2048差不多了。

thread_cache_size
//含义:缓存可重用的线程数。
//影响:这个参数设置线程的缓存,线程的创建和销毁的开销可能很大,因为每个线程的连接/断开都需要。如果应用程序中有大量的跳跃并发连接并且线程较多的话,就要加大它的值。它的目的是在通常的操作中无需创建新线程。一般来说如果在应用端有良好的多线程处理,这个参数对性能不会有太大的提高
//建议:通常至少设置为16。
 
query_cache_size
//含义:指定MySQL查询结果缓冲区的大小。
//影响:如果应用程序有大量读且很少有数据改变表,而且没有应用程序级别的缓存,可以设置query_cache_size大于0,可以极大改善查询效率。而如果表数据频繁变化,就不要使用这个,会适得其反。不过不要设置太大,因为维护它也需要不少开销,这会导致MySQL变慢。
//建议:通常设置为 32-512Mb。设置完之后最好是跟踪一段时间,查看是否运行良好。在一定的负载压力下,如果缓存命中率太低了,就启用它,如果命中率已经不错了,就可以把他调小一点。对于2G的内存,先从16M开始,一倍一倍的增加,直到命中率比较稳定为止。

query_cache_limit
//含义:缓存单条SQL的结果集上限。默认4KB。
//影响:当一条SQL返回的结果集大于这个限制的时候,将不被MySQL缓存。
//建议:设置为1M即可。

query_cache_min_res_unit
//含义:缓存为每个数据集存放的最小内存大小,默认4KB。
//影响:如果太小的话,将会导致MySQL经常访问内存块去获取信息,如果设置太大则浪费内存。
//建议:如果SQL返回的结果集都很小的话,参数也可以调小一点,避免内存浪费。如果结果集大部分都大于4KB的话,则考虑加大参数。

back_log
//含义:在MySQL的连接请求等待队列中允许存放的最大连接请求数。系统默认值为50。
//影响:如果系统在一个短时间内有很多连接,则需要增大该参数的值,该参数值指定到来的TCP/IP连接的侦听队列的大小。不同的操作系统在这个队列大小上有它自 己的限制。试图设定back_log高于你的操作系统的限制将是无效的。
//建议:对于Linux系统推荐设置为小于512的整数。

sort_buffer_size
//含义:为每个需要进行排序的线程分配该大小的一个缓冲区。
//影响:增加这值加速ORDER BY或GROUP BY操作。不过该参数对应的分配内存是每连接独占的,如果有100个连接,那么实际分配的总共排序缓冲区大小为100×sort_buffer_size。
//建议:一般设置为2M观察变化再调整。

read_buffer_size
//含义:顺序查询操作所能使用的缓冲区大小。
//影响:和sort_buffer_size一样,该参数对应的分配内存也是每连接独享。
//建议:一般设置为2M再观察变化。

read_rnd_buffer_size
//含义:随机查询操作所能使用的缓冲区大小。
//影响:每个线程独享。
//建议:一般设置为2M再观察变化。

query_cache_type
//含义:查询缓冲类型。
//影响:为1是使用缓冲,2是除非使用SQL_CACHE才进行缓冲。对于缓冲而言,数据并不是实时的,有一定的延时。但是对于实时性要求不高的查询短时间内多次执行,是不划算的,这个时候就需要缓存。并且缓存中是区分空格和大小写的,如果大小写不一致和空格不一致,也会认为是不同的SQL,不会利用到缓存。虽然不设置查询缓冲,有时可能带来性能上的损失,但有一些SQL语句需要实时地查询数据,或并不经常使用(可能一天就执行一两次),这样就需要把缓冲关了,可以采用临时关闭的方法SELECT SQL_NO_CACHE。
//建议:一般设置为1。

重要的优化参数:
innodb_buffer_pool_size //适当增加该参数可以减少数据查询磁盘IO
innodb_log_file_size //适当增加该参数可以减少触发数据库的检查点(Checkpoint)导致innodb缓存脏页的小批量刷新磁盘IO
innodb_log_buffer_size //适当增加该参数可以减少事物写入磁盘IO
max_connections
sort_buffer_size //适当增加该参数可以减少order by和group by的磁盘IO

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,128评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,316评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,737评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,283评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,384评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,458评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,467评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,251评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,688评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,980评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,155评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,818评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,492评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,142评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,382评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,020评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,044评论 2 352

推荐阅读更多精彩内容