暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片
MySQL 优化系列(1)-- InnoDB重要参数优化 - 散尽浮华 - 博客园.pdf
96
16页
3次
2023-12-27
免费下载
博客园 首页 新随笔 联系 管理 订阅 随笔- 568 文章- 39 评论- 895
MySQL 优化系列(1-- InnoDB重要参数优化
1.简单介绍
InnoDBMySQL提供了具有提交,回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎。InnoDB锁定在行
级并且也在SELECT语句提供一个Oracle风格一致的非锁定读。这些特色增加了多用户部署和性能。没有在
InnoDB中扩大锁定的需要,因为在InnoDB中行级锁定适合非常小的空间。InnoDB也支持FOREIGN KEY强制。
SQL查询中,你可以自由地将InnoDB类型的表与其它MySQL的表的类型混合起来,甚至在同一个查询中也可
以混合。
2.之所以选用innodb作为存储引擎的考虑
目前来说,InnoDB是为Mysql处理巨大数据量时的最大性能设计。它的CPU效率可能是任何其它基于磁盘的关系
数据库引擎所不能匹敌的。在数据量大的网站或是应用中Innodb是倍受青睐的。
另一方面,在数据库的复制操作中Innodb也是能保证masterslave数据一致有一定的作用。
3.下面是对线上mysql5.6版本的数据库的配置进行的优化分析记录:
1)内存利用方面
innodb_buffer_pool_size
这个是Innodb最重要的参数,和MyISAMkey_buffer_size有相似之处,但也是有差别的。
这个参数主要缓存innodb表的索引,数据,插入数据时的缓冲。
该参数分配内存的原则:
这个参数默认分配只有8M,可以说是非常小的一个值。
如果是一个专用DB服务器,那么他可以占到内存的70%-80%
这个参数不能动态更改,所以分配需多考虑。分配过大,会使Swap占用过多,致使Mysql的查询特慢。
如果你的数据比较小,那么可分配是你的数据大小+10%左右做为这个参数的值。
例如:数据大小为50M,那么给这个值分配innodb_buffer_pool_size64M
设置方法,在my.cnf文件里:
innodb_buffer_pool_size=4G
----------------------------------------------------------------------------------------------------------
注意:
Mysql5.7版本之前,调整innodb_buffer_pool_size大小必须在my.cnf配置里修改,然后重启mysql进程才可
以生效。
如今到了Mysql5.7版本,就可以直接动态调整这个参数,方便了很多。
尤其是在服务器内存增加之后,运维人员不能粗心大意,要记得调大Innodb_Buffer_Pool_size这个参数。
数据库配置后,要注意检查Innodb_Buffer_Pool_size这个参数的设置是否合理
需要注意的地方:
在调整innodb_buffer_pool_size 期间,用户的请求将会阻塞,直到调整完毕,所以请勿在白天调整,在凌晨3-
4点低峰期调整。
调整时,内部把数据页移动到一个新的位置,单位是块。如果想增加移动的速度,需要调整
innodb_buffer_pool_chunk_size参数的大小,默认是128M
Mysql5.7中动态调整这个参数的操作记录(例如由128M增大为384M):
134217728/1024*1024=128M
mysql> SELECT @@innodb_buffer_pool_size;
+---------------------------+
| @@innodb_buffer_pool_size |
+---------------------------+
| 134217728 |
+---------------------------+
1 row in set (0.00 sec)
mysql> SELECT @@innodb_buffer_pool_chunk_size;
+---------------------------------+
| @@innodb_buffer_pool_chunk_size |
+---------------------------------+
昵称: 散尽浮华
园龄: 49个月
粉丝: 3055
关注: 23
+加关注
< 202012 >
29 30 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 1 2
3 4 5 6 7 8 9
找找看
谷歌搜索
我的随笔
我的评论
我的参与
最新评论
我的标签
Ansible(5)
Apache(6)
Ceph(4)
ClusterShell(1)
DNS(5)
Docker(36)
DRBD(3)
Elasticsearch(7)
Expect(2)
Fabric(1)
FastDFS(1)
FTP(4)
GlusterFS (5)
Haproxy(6)
IP SAN(1)
更多
202011(11)
20204(1)
20203(1)
201911(2)
201910(3)
20199(1)
20198(4)
20197(4)
20196(1)
20194(2)
20193(6)
20192(6)
首页 新闻 博问 专区 闪存 班级
代码改变世界
注册 登录
重剑无锋,大巧不工!
| 134217728 |
+---------------------------------+
1 row in set (0.00 sec)
mysql> SET GLOBAL innodb_buffer_pool_size=402653184;
Query OK, 0 rows affected (0.01 sec)
mysql> SELECT @@innodb_buffer_pool_size;
+---------------------------+
| @@innodb_buffer_pool_size |
+---------------------------+
| 402653184 |
+---------------------------+
1 row in set (0.00 sec)
innodb_buffer_pool_chunk_size的大小,计算公式是
innodb_buffer_pool_size/innodb_buffer_pool_instances
比如现在初始化innodb_buffer_pool_size2Ginnodb_buffer_pool_instances实例为4
innodb_buffer_pool_chunk_size设置为1G,那么会自动把innodb_buffer_pool_chunk_size 1G调整为
512M.
例:
./mysqld --innodb_buffer_pool_size=2147483648 --innodb_buffer_pool_instances=4
--innodb_buffer_pool_chunk_size=1073741824;
mysql> SELECT @@innodb_buffer_pool_size;
+---------------------------+
| @@innodb_buffer_pool_size |
+---------------------------+
| 2147483648 |
+---------------------------+
1 row in set (0.00 sec)
mysql> SELECT @@innodb_buffer_pool_instances;
+--------------------------------+
| @@innodb_buffer_pool_instances |
+--------------------------------+
| 4 |
+--------------------------------+
1 row in set (0.00 sec)
# Chunk size was set to 1GB (1073741824 bytes) on startup but was
# truncated to innodb_buffer_pool_size / innodb_buffer_pool_instances
mysql> SELECT @@innodb_buffer_pool_chunk_size;
+---------------------------------+
| @@innodb_buffer_pool_chunk_size |
+---------------------------------+
| 536870912 |
+---------------------------------+
1 row in set (0.00 sec)
监控Buffer Pool调整进程
mysql> SHOW STATUS WHERE Variable_name='InnoDB_buffer_pool_resize_status';
+----------------------------------+----------------------------------+
| Variable_name | Value |
+----------------------------------+----------------------------------+
| Innodb_buffer_pool_resize_status | Resizing also other hash tables. |
+----------------------------------+----------------------------------+
1 row in set (0.00 sec)
20191(6)
201812(9)
201811(7)
更多
Linux命令大全
Git基础教程
Prometheus中文手册
Zabbix监控配置教程
Centosepel源下载
Nginx官方文档
Mysql源码下载
Python自动化运维-案例源码
阿里开源镜像
Docker镜像-hub.docker
Python自动化运维之路
Docker基础学习
Redis命令参考
Django基础教程
RUNOOB.COM - 编程学习
更多
1. Re:NFS双机热备高可用环境 - 运维笔记
先安装扩展包源,否则inotify-tools找不到 阿里的yum
原下载安装 epel扩展源 备份本地源 mv /etc/yum.rep
os.d/CentOS-Base.repo /etc/yum.r...
--XWD2020
2. Re:Redis哨兵模式(sentinel)学习总结及部署记录
(主从复制、读写分离、主从切换)
Sentinel选取领导者,这部分看得不是很懂。。 选举过
程到底是先到先得,还是投票超过半数会被成为领导者?
还是说文中先到先得的意思是,每个Sentinel只能投票
一次,只要它投票了,后续的投票...
--Hongscar
3. Re:Centos下添加静态路由(临时和永久有效)的操
作记录
centos 7?
--RoinBi
4. Re:Docker Swarm 日常运维命令笔记
大佬,请问集群怎么重启节点的容器呢?还是说只能删除重
发包
--snuglove
5. Re:升级glic 解决"libc.so.6: version 'GLIBC_2.
14' not found"问题
很全面,可能遇到的问题也都记录下来了,赞!
--幻者
6. Re:openstack虚拟机迁移的操作记录
@paniling 什么不行???...
--檐下初逢
7. Re:Heartbeat基础知识-运维小结
针不戳
--LiangBingchuan
8. Re:Zookeeper集群"脑裂"问题 - 运维总结
得不到大多数支持的写是无效的,旧leader即使各种认
为自己是leader,依然没有什么作用 这句话的意思是
然连接着旧leaderclient,在其上面进行的写操作是无
效的是吧,那zk出现脑裂时...
--lant007
9. Re:Harbor镜像仓库(含clair镜像扫描) - 完整部署
记录
[root@localhost CA]# openssl x509 -req -in serv
er.csr -CA ca.crt -CAkey ca.key -CAcreateserial -
out ...
--Allen_Jol
10. Re:Harbor镜像仓库(含clair镜像扫描) - 完整部
署记录
前辈您好,一直在关注您的博客。这边我再做https自签
的时候,都是个根据您这边博客上来操作的。但是最后遇
到了这样的一个问题,google了以后任然没找到答案。
我再maccentos8.2上都试过,...
--Allen_Jol
1. Git忽略提交规则 - .gitignore配置运维总结(46667
3)
2. ELK实时日志分析平台环境部署--完整记录(181250)
of 16
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜