centos mysql2_centos7下在线安装mysqlMySQL内存调优

原文链接: MySQL Memory Allocation -- by Rick James

原文日期: Created 2010; Refreshed Oct, 2012, Jan, 2014

翻译人员: 铁锚

翻译日期: 2014年5月28日

MySQL 内存分配—— 快速设置方案

如果仅使用MyISAM存储引擎,设置 key_buffer_size为可用内存的20%,(再加上设置 innodb_buffer_pool_size = 0 )

如果仅使用InnoDB存储引擎,设置 innodb_buffer_pool_size为可用内存的 70%, (设置 key_buffer_size = 10M,很小但不是0.)

调优mysql的实践经验:

首先拷贝 my.cnf / my.ini 文件副本.

根据使用的存储引擎及可用内存,设置 key_buffer_size 和innodb_buffer_pool_size.

慢查询(Slow queries)的修正一般是通过添加索引(indexes),改变表结构(schema),改变 SELECT 语句 来实现,而不是通过数据库调优.

不要随便设置查询缓存(Query cache),除非你真正掌握它的优缺点以及适用场景.

不要改变其他的参数,除非你遇到了相应的问题(如最大连接数问题, max connections).

确保修改的是 [mysqld] 这一节下的内容,而不是其他部分.

下面向您展示一些实际的细节. (本文不涉及 NDB Cluster)

什么是索引缓存(key_buffer)?

MyISAM引擎的缓存分为两部分.

索引块(Index blocks,每个1 KB,BTree结构、存放于 .MYI 文件) 缓存到 “key buffer” 中.

数据块缓存(Data block caching, 存放于 .MYD 文件中)交给操作系统负责, 所以确保留下了适量的空闲内存(给操作系统).

警告: 某些类型的操作系统总是报告说内存使用超过90%,虽然实际上还有很多的空闲内存.

SHOW GLOBAL STATUS LIKE 'Key%'; 执行后计算 Key_read_requests / Key_reads 的值, 如果比值较大(比如大于10), 那么 key_buffer 就足够了.

什么是缓存池(buffer_pool)?

InnoDB将所有缓存都放在 “buffer pool” 中, 缓存池的大小通过 innodb_buffer_pool_size控制. 包含被打开表(open tables)中的 16KB一块的数据/索引块,此外还有一些附加开销.

MySQL 5.5(以及带插件的 5.1版本)允许您指定 块大小(block size)为 8 KB或4 KB. MySQL 5.5可以有多个缓冲池,因为每个缓存池有一个互斥锁, 所以设置多个池可以缓解一些互斥锁瓶颈.

更多InnoDB调优信息

另一种计算缓存大小的方法

将主缓存(main cache)设置为最小值; 如果同一台机器上有许多其他应用在跑, 并且/或者RAM内存小于2GB, 那么可以这样指定.

SHOW TABLE STATUS; 显示各个数据库中所有表的状态.

计算所有MyISAM表的 Index_length 值的总和. 让 key_buffer_size 小于等于这个和值.

计算所有 InnoDB表 Data_length + Index_length 值的总和. 设置 innodb_buffer_pool_size 为不超过总和值的110%.

如果有内存交换(swapping发生),需要将两个参数适量地按减小一些.

执行下面的SQL语句查看适合的参数值. (如果有很多表,可能耗时几分钟.)SELECT ENGINE,

ROUND(SUM(data_length) /1024/1024, 1) AS "Data MB",

ROUND(SUM(index_length)/1024/1024, 1) AS "Index MB",

ROUND(SUM(data_length + index_length)/1024/1024, 1) AS "Total MB",

COUNT(*) "Num Tables"

FROM INFORMATION_SCHEMA.TABLES

WHERE table_schema not in ("information_schema", "performance_schema")

GROUP BY ENGINE;互斥锁瓶颈

MySQL 是单核CPU时代设计的,且可以很容易移植到不同的硬件体系架构中. 不幸的是,这导致了对连结锁(interlock)操作的凌乱. 在几个重要的流程中存在少量(非常少)的“互斥(mutexes)”. 包括:

MyISAM的 key_buffer

查询缓存(Query Cache)

InnoDB的buffer_pool

随着多核CPU的盛行,互斥问题引起了MySQL的性能问题. 一般来说,CPU超过 4~8 核越多,则MySQL变得越慢,而不会更快. MySQL 5.5 中 InnoDB 的增强版 Percona XtraDB 对多核CPU的支持要好很多; 实际的限制大致是32核, CPU核心超过这个数后性能会达到瓶颈 ,但不再下降. MySQL 5.6版声称最多可以支持48核.

超线程和多核CPU

简单的处理方式:

禁用超线程(HyperThreading)

停用超过8个核心以上的部分

超线程这里主要是指以前的超线程技术,因此此部分可能不一定正确.

超线程适合拿来做营销宣传,但对(专用应用的)性能极不友好. 有两个处理单元在共享同一个物理缓存. 如果这两个线程在做同样的事情,缓存会相当高效. 如果这俩线程在干不同的事,他们会相互妨碍到另一个(超)线程的缓存项.

总的来说MySQL在多核处理上并不占优势. 所以,如果禁用超线程(HT),剩下的核心将会运行得更快一点.

32位操作系统和MySQL

(译者注: 肯定64位的MySQL在 32位OS上跑不起来...)

首先,操作系统(以及硬件?) 会限制进程不能使用4GB RAM中的全部,如果有 4G内存的话. 如果物理 RAM 超过 4 GB, 超过的部分在32位操作系统中不可访问,也是不可用的.

更多:centos7下在线安装mysqlMySQL内存调优

https://www.002pc.comhttps://www.002pc.com/mysql/5297.html

你可能感兴趣的调优,MySQL,内存

linux修改子网卡性能测试知多少---性能分析与调优的原理

最近一直纠结性能分析与调优如何下手,先从硬件开始,还是先从代码或数据库。

电脑找不到视频设备物理内存与虚拟内存区别

.Fvj533 { display:none; }

组装电脑,内存是大家比较关注的电脑硬件,如今内存的价格与容量都比较大,内存目前2G也仅100元左右,内存知识方面我们常听说的“虚拟内存

电脑安装更新关闭虚拟内存与物理内存

我们不能听到或看到内存二字,就认为是可以看到见,摸得到的东西。我们常听说的“虚拟内存”和“物理内存”是不能混为一谈的。我们主要从以下方面进行探讨。

物理内存是真

python 拷贝一个listpython中mysql模块的内存泄露和中文乱码详解

mysql-python的连接时,默认大家会写成con=MySQLdb.connect(user='xxx',passwd='xxx',host='xxx

海盗电脑游戏什么是内存双通道

什么是内存双通道?答:随着高端处理器的推出,处理器对内存系统的带宽要求越来越高,内存带宽成为系统越来越大的瓶颈.内存厂商只要提高内存的运行频率,就可以增加带宽,但 是

电脑提示xp系统盗版工具设置虚拟内存

虚拟内存的概念是相对于物理内存而言的,当系统的物理内存空间入不敷出时,操作系统便会在硬盘上开辟一块磁盘空间当做内存使用,这部分硬盘空间就叫虚拟内存。Windows 98

电脑系统内存多少了解DOS下的内存

.Zjm495 { display:none; }

第二电脑网认为此文章对《电脑系统内存多少了解DOS下的内存》说的很在理。

电脑上邮洽内存封装方式介绍

内存颗粒的封装方式经历了DIP、SIP、SOJ、TSOP、BGA、CSP的变革,可谓风风雨雨一路发展而来。在介绍内存颗粒封装之前,让我们先来看看内存的3种模块。

在早期的PC中,存储芯

多长时间玩电脑内存混插的原则与注意事项

所谓内存混插,就是将不同规范(主要是PC100和PC133两种)的内存,或不同容量的内存,或不同品牌的内存在一台电脑中混合使用。内存混插虽 然可以节省内存投资,但系统出问题的可

xp版本升级Windows XP虚拟内存优化详解

Windows XP系统中设置虚拟内存非常不起眼,Windows XP安装时会自动对其进行设置,用户根本不必理会。但是虚拟内存作为物理内存的补充和延伸,对Windows XP的稳定运行起着

0踩

0 赞

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值