mysql优化
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql优化,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3582字,纯文字阅读大概需要6分钟。
内容图文
![mysql优化](/upload/InfoBanner/zyjiaocheng/506/49f23a21f6824216aa7ebd51c352b3a3.jpg)
l 对MySQL配置参数进行优化(my.cnf)此优化需要进行压力测试来进行参数调整。
l 对SQL语句以及表优化。
服务器内核方面优化:
l 网络参数配置
网络参数配置需要修改配置文件/etc/sysctl.conf,可以在配置文件后面添加一下内容:
net.core.somaxconn=65536 #每个监听端口允许的最大的监听队列长度,这个值应该适当增大。
net.core.netdev_max_backlog=65536 #当网络端口接收数据包的速率比内核处理数据速度快时,允许发送到对列中的最大包数
net.ipv4.tcp_max_syn_backlog=65536 #还未获得链接的请求可保持在队列中的数量,当超过这个数目是,链接请求就可能被抛弃
net.ipv4.tcp_fin_timeout=10 #tcp链接等待时间,调整这个参数目的是为了加快TCP链接回收的速度
net.ipv4.tcp_tw_reuse=1 #加快TCP链接回收的速度
net.ipv4.tcp_tw_recycle=1 #加快TCP链接回收的速度
以下四个参数设置tcp链接接收和发送数据时缓冲区大小的最大值和和默认值,应该将其调整的更大一些。
net.core.wmem_default=87380
net.core.wmem_max=16777216
net.core.rmem_default=87380
net.core.rmem_max=16777216
以下三个参数用于减少时效的TCP链接所占用的资源,提升资源回收效率,改的较小一些
net.ipv4.tcp_keepalive_time=100 #代表TCP发送keepalive探测消息的时间间隔
net.ipv4.tcp_keepalive_intvl=10 #代表当TCp发送keepalive探测消息未获得确认是重发探测消息的时间间隔
net.ipv4.tcp_keepalive_probes=3 #代表TCP链接失效之前,最多发送多少keepalive探测消息
l 内存相关参数配置
内存的相关参数同样修改/etc/sysctl.conf文件
kernel.shmmax=2147483648用于定义单个共享内存段的最大值,这个参数应该设置的足够大,以便共享内存段能容纳下整个InnoDB缓冲池的大小。建议设置成物理内存的一半。
vm.swappiness=0 表示除非虚拟内存使用完了,否则不用swap分区。
l 特定资源限制配置
这个配置需要修改配置文件/etc/security/limits.conf,主要的就是对打开文件数量的配置,在MySQL的InnoDB存储引擎中,每一张表就对应着2-3个文件,对于允许打开文件的数量适当的增大,可以使MySQL的数据库性能更好。
打开文件数的配置
* soft nofile 65535
* hard nofile 65535
* 表示对所有用户生效
soft 代表是当前系统生效的设置
hard 代表系统中所能设定的最大值
nofile 表示所限制的资源是打开文件的数量
l 磁盘调度策略配置
一般默认情况下,CentOS系统的磁盘调度策略是完全公平队列模式(cfq),这种调度策略对于数据库服务器来说不太适合,而应该使用deadline调度策略。通过以下命令可以修改调度策略:
echo deadline>/sys/block/devname/queue/scheduler
以上就是一些比较重要的配置MySQL数据库服务器系统参数的调整,调整这些系统参数后,会使MySQL服务器的性能更好,但这并不是全部的系统参数调整。可以参看Linux系统参数调优的相关数据了解更多系统参数调优。
Mysql参数优化:
1:MySQL 默认的最大连接数为 100,可以在 mysql 客户端使用以下命令查看
mysql> show variables like ‘max_connections‘;
2:查看当前访问Mysql的线程
mysql> show processlist;
3:设置最大连接数
mysql>set global max_connections = 5000;
最大可设置16384,超过没用
4:查看当前被使用的connections
mysql>show global status like ‘max_user_connections‘
还有一些其他的优化如字符集,存储引擎设置等。
对MySQL语句性能优化的16条经验
① 为查询缓存优化查询
② EXPLAIN 我们的SELECT查询(可以查看执行的行数)
③ 当只要一行数据时使用LIMIT 1
④ 为搜索字段建立索引
⑤ 在Join表的时候使用相当类型的列,并将其索引
⑥ 千万不要 ORDER BY RAND ()
⑦ 避免SELECT *
⑧ 永远为每张表设置一个ID
⑨ 可以使用ENUM 而不要VARCHAR
⑩ 尽可能的使用NOT NULL
? 固定长度的表会更快
? 垂直分割
? 拆分打的DELETE或INSERT语句
? 越小的列会越快
? 选择正确的存储引擎
? 小心 "永久链接"
mysql优化
标签:mem schedule order efault sql 缓冲 消息 strong 配置
本文系统来源:https://www.cnblogs.com/duanlinxiao/p/10543768.html
内容总结
以上是互联网集市为您收集整理的mysql优化全部内容,希望文章能够帮你解决mysql优化所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。