MySQL数据库服务器的核心参数详细信息和推荐配置

MySQL手册还服务器参数的解释,以及相关信息的参数值,在本文中,我们重点需要关注,需要修改或影响服务器的性能参数,为使用和解释如何配置参数的推荐值,这件事拖了很多时间,对帮助便利(注意校正总是间歇过,可能会有一笔),第一次在网上公布的方式,后续可能没有问题,将通过新浪微博微盘提供PPT下载,方便大家学习和参考。
我lower_case_table_names
Linux或类Unix平台对文件名敏感非常敏感,即对对象名(如数据库、表和存储过程)非常敏感。为了减少开发人员的开发成本,我们建议您设置这个参数来自动将对象名转换为小写。
我max_connect_errors
默认值是10 max_connect_errors,即mysqld线程不重启,只要一个物理服务器连接中断共计10余次,无法连接到mysqld服务,因此建议设置这个值至少等于或大于到10W;如果异常中断累计超过参数的设定值,有两种解决方案。该命令的执行:冲洗主机;或者重启mysqld服务;

我interactive_timeout和wait_timeout
你interactive_timeout
交互状态中的活动被迫由服务器端关闭,而等待时间为单位:第二个;
你wait_timeout
在服务器被迫关闭和等待时间之前,没有与服务器端的交互状态。此参数仅适用于基于TCP/IP或基于套接字的通信协议的连接。
你推荐的设置
interactive_timeout = 172800
wait_timeout = 172800
l事务隔离和binlog格式
你的事务隔离
有效值:read-uncommitted,read-committed,repeatable-read,
可序列化的,默认值是repeatable-read,在事务隔离级别设置的不同,对二进制日志登记
风格的影响非常大,详细的信息可以看出,文章解释了MySQL事务的隔离级别和日志注册模式的选择技术。
你binlog格式
模型的副本,用于值集:语句、行、混合(注:5。*命令行复制),
5.1版本的默认设置:混合;
你推荐的配置
第一个只读业务应用程序场景
事务隔离=读取提交
binlog格式=混合# 5.1。*版,5。*只能设置语句
非只读业务应用场景
事务隔离= repeatabled读
binlog格式=混合# 5.1。*版,5。*只能设置语句
我event_scheduler
事务调度默认关闭。还建议未编译源代码的编译版本,实际生产环境处于默认禁用状态。当它真的需要被使用,它可以暂时打开,并命令设置全局event_scheduler = 1。
我skip_external_locking
外锁,就是锁的操作系统上的实现,是合法的MyISAM引擎,容易造成僵局,所以我们都禁用它。
L innodb_adaptive_hash_index
InnoDB引擎将逐渐放缓的表的数据存储根据数据访问频率。如果一个表的数据是缓存在内存中,这将是更有效的使用哈希索引(注:哈希索引)。InnoDB哈希索引机制来监控数据访问。它可以自动创建和维护哈希索引,以提供访问效率和减少内存使用。
我innodb_max_dirty_pages_pct
InnoDB主线程更新数据innodb_buffer_pool_size直接,不返回到实时盘刷。相反,它等待相关的惩罚事件发生。它允许在缓存空间的数据量不回实时磁盘的最大比例。比例小,减少mysqld服务问题时的恢复时间,缺点是需要更多的物理我 / O,所以我们必须根据业务特点和可承受的妥协,该设置为5% ~ 90%的大致范围,为我们写的SNS游戏产业是非常强大的,综合因素,设置20%;
我innodb_commit_concurrency
意义:同时,多少线程可以同时提交InnoDB事务,默认值是0,和范围0-1000。
0 -允许在同一时间点提交任意数量的事务;
n > 0 -允许在同一时间点提交n个事务;
注意事项:uff1a
(1)当mysqld提供服务,这是不允许的innodb_commit_concurrency的值从0改为非0值,或非0到0。

(2)当mysqld设置,n>0的innodb_commit_concurrency可以改变我的价值,和m>0;
我innodb_concurrency_tickets
意义uff1a
同时,能够访问InnoDB引擎数据的线程数,默认值是500,和范围1-4294967295。
附加说明:当线程访问InnoDB引擎的数据数量达到设定的线,线将被放置在队列中,等待其他线程释放票。
建议:
MySQL数据库服务的最大连接数max_connections螺纹参数,一般情况下,将在128-1024范围,结合企业实际可能的最大事务并发,innodb_concurrency_tickets保持默认值通常是足够的。
我innodb_fast_shutdown和innodb_force_recovery
innodb_fast_shutdown:
意义:设置innodb引擎关闭,默认值为:1,正常关闭状态;
前0 mysqld服务关闭时,先进行数据完全清理干净并插入合并操作的缓冲区,如果脏数据
诸如更多或服务器性能等因素将使过程花费几分钟或更长时间。
1正常关闭mysqld服务为InnoDB引擎做任何其他操作。
2如果mysqld崩溃,事务日志立即刷盘和mysqld服务关闭冷;提交不提交。
交易会丢失,但事务将回滚,当再次启动mysqld服务;
innodb_force_recovery:
意义uff1a
mysqld服务崩溃后,InnoDB引擎回滚以0的默认值和设定值0 ~ 6模式;
提示:uff1a
只有当数据备份是从错误的状态数据库的需要,建议在innodb_force_recovery值设置超过0。如果这个参数是作为一种安全的选择,参数的值,可以设置超过0防止InnoDB引擎更改数据和设置不同的值。
0 -正常关闭和启动,并没有强制恢复操作。
1跳过错误页,mysqld服务将继续运行。跳过误差指标记录和存储页,尝试使用
选择*我outfile'。 /文件名字段;模式,完整的数据备份;
2防止InnoDB的主线程运行。mysqld服务崩溃时清洗操作防止数据恢复操作;
3 -恢复,没有事务回滚;
4阻塞合并操作的插入缓冲。没有合并操作是为了防止坠毁mysqld服务没有计算。
表的统计信息
5 mysqld服务不检查回滚日志当服务开始:InnoDB引擎将每个不确定的交易提交
同样的事情;
6 -在滚动恢复操作之前不做事务日志;
推荐参数组合配置:
innodb_fast_shutdown = 1
#如果房间条件可设为0(双电源、UPS、RAID卡和电池供电系统的稳定性)
innodb_force_recovery = 0
#作为一个问题,为什么设定值的原因和根据错误的程度,对数据做后续操作
我innodb_additional_mem_pool_size
意义:开辟一块数据字典信息和内部数据结构缓存innodb引擎(例如:自适应哈希索引结构);
默认值:生成的版本默认值为1m;插件的InnoDB版本的默认值是:8m;
提示:如果表mysqld服务对象数量大,和InnoDB引擎的数据量大,和值的设定innodb_buffer_pool_size大,应适当调整innodb_additional_mem_pool_size的价值。如果在缓存内存不足,它将申请分配内存的直接操作系统和写的预警信息,MySQL错误日志文件;
我innodb_buffer_pool_size
意义:开辟一块用来缓存数据和索引存储的InnoDB引擎的表;
默认值:历史的默认值是:8M,和版本的默认值是:128m;
参数最大值:体系结构仅限于CPU,支持32位或支持64位,仅限于32位或64位操作系统;
提示:uff1a
该innodb_buffer_pool_size值设置正确保存表中的对象数据的物理IO。推荐的专用的数据库服务器,官方手册,可以设置为80%的物理内存总量,物理内存的总量,而是看个人的建议和考虑物理服务器只使用InnoDB引擎占据mysqld,记忆的内部管理,最大线程连接数和临时表和其他因素,如80%参考官方价值,例如,促进决策(前提:物理服务器mysqld服务特殊,只有InnoDB引擎,假设数据是比物理内存量大得多):
1)。Memory configuration: 24G is innodb_buffer_pool_size=18G
1)。内存配置:32g是innodb_buffer_pool_size = 24g
在下列情况下,可以考虑减少innodb_buffer_pool_size价值:
1)。物理内存的竞争可能导致操作系统的分页;
2)。InnoDB predistributive内存缓冲和结构管理,当总分配的内存量是超过10%的innodb_buffer_pool_size价值;
3)。地址空间的要求必须是连续的,Windows系统中存在严重的问题,DLL需要在特定的地址空间中加载;
4)。的初始化缓存的时间消耗是缓冲区的大小成正比。官方数据Linux x86 64位系统初始化innodb_buffer_pool_size = 10G为约6秒。
我innodb_flush_log_at_trx_commit和sync_binlog
innodb_flush_log_at_trx_commit = N:
N=0—每秒,事务日志缓存的数据被写入日志文件,日志文件的数据被刷新到磁盘。
n = 1时u2013每个事务提交,事务日志写入缓存的日志文件和日志文件的数据刷新到磁盘。

n = 2 u2013当事务被提交,记录交易数据从缓存区写入日志文件。每秒钟,刷新一个日志文件,但不一定刷新到磁盘,但取决于操作系统的调度。
sync_binlog = N:
n 0–当n个SQL或n个事务被写入二进制日志文件时,二进制日志文件的数据被刷新到磁盘。
n = 0 -不主动刷新二进制日志文件的数据到磁盘,而是由操作系统刷新。
推荐配置组合:
对数据安全的要求非常高,磁盘IO写入能力足以支持服务,如充值消费系统;
n=0 -数据安全性要求高,磁盘IO写支持业务能力不丰富,允许向后或无复制;
n=0或2,m(0<m<100)适用于数据的安全性,允许一个小事务日志的丢失,和复制架构的延迟也是可以接受的;
N = 0,0磁盘IO写的能力是有限的,不允许复制或复制接受更长一点的时间延迟,例如:日志登记服务;
我innodb_file_per_table
启用单表空间可以减少共享表空间维护的成本,减少空闲磁盘空间释放的压力。此外,在大量数据的性能上也可以提高性能,因此建议使用独立表空间而不是共享表空间。
我key_buffer_size
只有key_buffer_size指数数据缓存MyISAM或MyISAM引擎,和innodb_buffer_pool_size不仅可以缓存索引数据可以缓存元数据,但对于数据库系统,我们使用InnoDB引擎,这个参数的值不能太小,因为临时表可以使用这个关键的缓冲空间,推荐指数:64m缓冲;
我query_cache_type和query_cache_size
N query_cache_type = N
n = 0 -禁用查询缓存的功能;
n = 1 -使生产调度缓存缓存功能,以满足所有查询结果集的要求,除了选择sql_no_cache ..,不满足查询结果集的缓存设置;
每组2只缓存选择sql_cache…子句的查询结果集,除了不匹配的查询结果集的缓存设置;
N query_cache_size
查询缓存设置有多大是合理的至少需要考虑四个方面:
(1)对DDL和DML语句的查询缓存性能的影响;
缓存区内部维护成本的探讨;
查询缓存区命中率和内存使用率的综合考虑
业务类型