问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

MySQL 配置文件 my.cnf / my.ini 逐行解析

发布网友 发布时间:2024-10-03 18:07

我来回答

1个回答

热心网友 时间:2024-11-09 03:19

充分理解 MySQL 配置文件中各个变量的意义对我们有针对性的优化 MySQL 数据库性能有非常大的意义。我们需要根据不同的数据量级,不同的生产环境情况对 MySQL 配置文件进行优化。

Windows 和 Linux 下的 MySQL 配置文件的名字和存放位置都是不同的,WIndows 下 MySQL 配置文件是 my.ini 存放在 MySQL 安装目录的根目录下;Linux 下 MySQL 配置文件是 my.cnf 存放在 /etc/my.cnf、/etc/mysql/my.cnf。我们也可以通过 find 命令进行查找。

另外要注意的是,通过 rpm 命令安装的 MySQL 是没有 /etc/my.cnf 文件的,如果需要配置 MySQL,可以在 /etc/my.cnf 新建配置文件,然后把本文的配置信息复制到文件中即可。

本教程将带领大家逐条解析最新的 MySQL 8.0 的配置文件,争取搞懂每一条变量。当然,我们理解了变量的意义外,更重要的是针对自己的数据库外部环境,在实践中进行微调,以达到优化性能的目的。

MySQL 配置文件逐行解析文章非常长,这里仅是摘要,全文完整版请在这里查看 MySQL 配置文件详解

文件位置: Windows、Linux、Mac 有细微区别,Windows 配置文件是 .ini,Mac/linux 是 .cnf

当然我们也可以使用命令来查看 MySQL 默认配置文件位置

[client]

客户端设置。当前为客户端默认参数

默认连接端口为3306

本地连接的socket 套接字

设置字符集,通常使用 uft8 即可

[mysqld_safe]

mysqld_safe 是服务器端工具,用于启动 mysqld,也是 mysqld 的守护进程。当 mysql 被 kill 时,mysqld_safe 负责重启启动它。

此为 MySQL 打开的文件描述符*,它是 MySQL 中的一个全局变量且不可动态修改。它控制着 mysqld 进程能使用的最大文件描述符数量。默认最小值为 1024

需要注意的是这个变量的值并不一定是你在这里设置的值,mysqld 会在系统允许的情况下尽量取最大值。

当 open_files_limit 没有被配置时,比较 max_connections*5 和 ulimit -n 的值,取最大值

当open_file_limit 被配置时,比较 open_files_limit 和 max_connections*5 的值,取最大值

用户名

错误 log 记录文件

[mysqld]

服务端基本配置

mysqld 服务端监听端口

MySQL 客户端程序和服务器之间的本地通讯指定一个套接字文件

允许最大接收数据包的大小,防止服务器发送过大的数据包。

当发出长查询或 mysqld 返回较大结果时,mysqld 才会分配内存,所以增大这个值风险不大,默认 16M,也可以根据需求改大,但太大会有溢出风险。取较小值是一种安全措施,避免偶然出现但大数据包导致内存溢出。

创建数据表时,默认使用的存储引擎。这个变量还可以通过–default-table-type 进行设置

最大连接数,当前服务器允许多少并发连接。默认为 100,一般设置为小于 1000 即可。太高会导致内存占用过多,MySQL 服务器会卡死。作为参考,小型站设置 100 - 300

用户最大的连接数,默认值为 50 一般使用默认即可。

线程缓存,用于缓存空闲的线程。这个数表示可重新使用保存在缓存中的线程数,当对方断开连接时,如果缓存还有空间,那么客户端的线程就会被放到缓存中,以便提高系统性能。我们可根据物理内存来对这个值进行设置,对应规则 1G 为 8;2G 为 16;3G 为 32;4G 为 64 等。

Query Cache

请注意,如果在禁用查询缓存的情况下启动服务器,则无法在运行时启用服务器。

缓存 select 语句和结果集大小的参数。

查询缓存会存储一个 select 查询的文本与被传送到客户端的相应结果。

如果之后接收到一个相同的查询,服务器会从查询缓存中检索结果,而不是再次分析和执行这个同样的查询。

如果你的环境中写操作很少,读操作频繁,那么打开 query_cache_type=1,会对性能有明显提升。如果写操作频繁,则应该关闭它(query_cache_type=0)。

MySQL 执行排序时,使用的缓存大小。增大这个缓存,提高 group by,order by 的执行速度。

HEAP 临时数据表的最大长度,超过这个长度的临时数据表 MySQL 可根据需求自动将基于内存的 HEAP 临时表改为基于硬盘的 MyISAM 表。我们可通过调整 tmp_table_size 的参数达到提高连接查询速度的效果。

MySQL 读入缓存的大小。如果对表对顺序请求比较频繁对话,可通过增加该变量值以提高性能。

用于表的随机读取,读取时每个线程分配的缓存区大小。默认为 256k,一般在 128 - 256k之间。在做 order by 排序操作时,会用到 read_rnd_buffer_size 空间来暂做缓冲空间。

程序中经常会出现一些两表或多表 Join (联表查询)的操作。为了减少参与 Join 连表的读取次数以提高性能,需要用到 Join Buffer 来协助 Join 完成操作。当 Join Buffer 太小时,MySQL 不会将它写入磁盘文件。和 sort_buffer_size 一样,此参数的内存分配也是每个连接独享。

*不使用文件描述符存储在缓存中的表定义的数量。

*为所有线程在内存中打开的表数量。

关于 MySQL 慢查询日志更多扩展内容,请看我写的另一篇《如何使用慢查询日志对 MySQL 进行性能优化 - Profiling、mysqlmpslow 实例详解》教程

MySQL 配置文件逐行解析文章非常长,这里仅是摘要,全文完整版请在这里查看

如果觉得本文对你有帮助,还请点个赞。任何问题欢迎评论区一起讨论。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
ef英语哪个好 EF英孚英语培训怎么样? 英孚英语好不好 EF英孚教育到底好不好 大佬们,麦芒7和荣耀10那个值得入手?2500以下的机子还有啥好推荐的么... 介绍几款2500元以前的手机 像素一定要高 其他的不做要求 近期想入手一部安卓手机,价格2200到2500左右…买HTC desire Z还是 三星... 笔记本忘记开机密码怎么办急死了 笔记本电脑屏幕开机锁忘记密码 怎么办?急死了 华硕笔记本电脑开机密码忘记了怎样找回?系统是Windows 7旗舰版... 这是吴彦祖的什么电影 这是吴彦祖的哪部电影 请问这图片出自哪个电影或电视剧 ...请问我该分几年来还,然后每个月的利息是多少? 求口袋妖怪钻石493版全部怪的出处 被刺猬咬了一年怎么办?后来有去打疫苗,不过是半年后给兔子咬到了 手机有ipad1还能安装软件吗? 怎样看中华草龟的年龄(中华草龟怎么看年龄) 解梦:梦到被大蟒蛇差点儿吞进去,代表什么啊 天下无贼是根据哪部小说改编的? 吃微波炉加热的食品有害吗求大神帮助 长期吃微波炉做的东西对身体有害吗?求大神帮助 求,古代的言情小说 请问大佬有moin11软件(win11兼容检测工具) v0.10.12 绿色版软件免费百度 ... 哪位大神有Moin11(Win11兼容检测工具) V0.10.12 绿色免费版软件百度云资 ... 一瓶水买三送一买25瓶每瓶4元相当于打几折 冯小刚导演的影片中,哪一部的票房最高? 换汇成本超出合理范围的退税申报如何操作? 出口退税手册是什么 你好,我司是外贸企业,出口退税已生成申报软盘的数据如何撤销,怎么操作... DNA水解酶可以彻底水解DNA分子吗 DNA分子彻底水解的产物是什麽 吴彦祖是“情圣”吗,揭秘吴彦祖的“风流”和“豪横”,你怎么看?_百度... 吴彦祖晒童年照低调庆生,47岁便直言自己老了,超高颜值遗传爸妈_百度... 为什么平行板电容器的电场图像是条直线? ...交通银行、兴业银行,那家银行贷款比较方便?好贷款一 手缝针了 想游泳 怎么办 男朋友总爱游泳,应该送什么礼物? 阴阳师妖怪屋彼岸花式神是什么样的-彼岸花式神介绍[图文] 遵义市红花岗区初中,高中每月绩效工资分别是多少? 咨询国家级优秀教师退休工资问题 最近,重庆的退休教师升多少工资? 在括号里填成语:最奇怪的动物( ),最夸张的嘴( ) 关于九年义务教育老师实行的绩效工资,离退休人员工资是否有变化?_百度... 如何防治螨虫 螨虫的防治方法 螨虫如何有效防治呢 浪漫的爱情英文句子(爱情和海的浪漫句子) 新买的oppor1c手机为嘛待机时耗电这么快,才买一个月都不到。。。_百 ... 邮局投诉的话,全国各地都是一个号码吗 国内那个网盘内存最大,并且是免费的