`
hzl7652
  • 浏览: 118700 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

MySQL参数调优[转载]

阅读更多

l 通用类:

key_buffer_size

含义:用于索引块的缓冲区大小,增加它可得到更好处理的索引(对所有读和多重写)。

影响:对于MyISAM表的影响不是很大,MyISAM会使用系统的缓存来存储数据,所以大量使用MyISAM表的机器内存很快就会耗尽。但是,如果你将该值设得过大(例如,大于总内存的50%),系统将转换为页并变得极慢。MySQL依赖操作系统来执行数据读取时的文件系统缓存,因此你必须为文件系统缓存留一些空间。

建议:先设置为内存的25%,观察性能变化。



table_open_cache

含义:为所有线程打开表的数量。

影响:增加该值能增加mysqld要求的文件描述符的数量。可以避免频繁的打开数据表产生的开销。打开一个表的开销可能很大,因为MyISAM会把MYI文件的文件头标识为正在使用,所以在内存中做这个操作比较好。,因为每个线程都需要打开表,连接数越大这个值要越大。

建议:我们有300多个表的话,大约2048差不多了。



thread_cache_size

含义:缓存可重用的线程数。

影响:这个参数设置线程的缓存,线程的创建和销毁的开销可能很大,因为每个线程的连接/断开都需要。如果应用程序中有大量的跳跃并发连接并且线程较多的话,就要加大它的值。它的目的是在通常的操作中无需创建新线程。

建议:通常至少设置为16。



query_cache_size

含义:指定MySQL查询结果缓冲区的大小。

影响:如果应用程序有大量读,而且没有应用程序级别的缓存,那么这很有用。不过不要设置太大,因为维护它也需要不少开销,这会导致MySQL变慢。

建议:通常设置为 32-512Mb。设置完之后最好是跟踪一段时间,查看是否运行良好。在一定的负载压力下,如果缓存命中率太低了,就启用它,如果命中率已经不错了,就可以把他调小一点。对于2G的内存,先从16M开始,一倍一倍的增加,直到命中率比较稳定为止。


query_cache_limit

含义:缓存单条SQL的结果集上限。默认4KB。

影响:当一条SQL返回的结果集大于这个限制的时候,将不被MySQL缓存。

建议:设置为1M即可。


query_cache_min_res_unit

含义:缓存为每个数据集存放的最小内存大小,默认4KB。

影响:如果太小的话,将会导致MySQL经常访问内存块去获取信息,如果设置太大则浪费内存。

建议:如果SQL返回的结果集都很小的话,参数也可以调小一点,避免内存浪费。如果结果集大部分都大于4KB的话,则考虑加大参数。


back_log

含义:在MySQL的连接请求等待队列中允许存放的最大连接请求数。系统默认值为50。

影响:如果系统在一个短时间内有很多连接,则需要增大该参数的值,该参数值指定到来的TCP/IP连接的侦听队列的大小。不同的操作系统在这个队列大小上有它自 己的限制。试图设定back_log高于你的操作系统的限制将是无效的。

建议:对于Linux系统推荐设置为小于512的整数。


sort_buffer_size

含义:为每个需要进行排序的线程分配该大小的一个缓冲区。

影响:增加这值加速ORDER BY或GROUP BY操作。不过该参数对应的分配内存是每连接独占的,如果有100个连接,那么实际分配的总共排序缓冲区大小为100×sort_buffer_size。

建议:一般设置为2M观察变化再调整。


read_buffer_size

含义:顺序查询操作所能使用的缓冲区大小。

影响:和sort_buffer_size一样,该参数对应的分配内存也是每连接独享。

建议:一般设置为2M再观察变化。


read_rnd_buffer_size

含义:随机查询操作所能使用的缓冲区大小。

影响:每个线程独享。

建议:一般设置为2M再观察变化。


query_cache_type

含义:查询缓冲类型。

影响:为1是使用缓冲,2是除非使用SQL_CACHE才进行缓冲。对于缓冲而言,数据并不是实时的,有一定的延时。但是对于实时性要求不高的查询短时间内多次执行,是不划算的,这个时候就需要缓存。并且缓存中是区分空格和大小写的,如果大小写不一致和空格不一致,也会认为是不同的SQL,不会利用到缓存。虽然不设置查询缓冲,有时可能带来性能上的损失,但有一些SQL语句需要实时地查询数据,或并不经常使用(可能一天就执行一两次),这样就需要把缓冲关了,可以采用临时关闭的方法SELECT SQL_NO_CACHE。

建议:一般设置为1。


l MyISAM类:

myisam_sort_buffer_size

MyISAM表发生变化时重新排序所需的缓冲。一般64M足矣。


l InnoDB类:

innodb_buffer_pool_size

对InnoDB的效率影响很大。因为InnoDB会把尽可能多的数据和索引缓存在缓冲区,这个类似与Oracle的Buffer Pool:如果只采用InnoDB,可以把这个参数调大一点,大约内存的70%左右。

当然,如果数据量不会暴增并且不是特别大,这个参数还是不要太大了,浪费空间。


innodb_additional_pool_size

对数据库性能影响不是很大,至少内存足够的机器上不会有什么影响。


innodb_log_file_size

在高写入负载尤其是数据集很大的时候,这个值非常重要,值越高性能越好,不过可能会增加数据恢复的时候。我设置为128M。


innodb_log_buffer_size

默认的设置在中等强度的写入负载及短事物处理时,性能还可以。但是存在大量更新操作或者负载较大时,就要慢慢增加这个参数的值了。不过不要设置太大,会浪费内存。它每秒都会刷新一次,所以不用设置超过1s所需的内存空间,16M足够了。


innodb_flush_logs_at_trx_commit

这个参数对InnoDB及其重要,设置不好的话会比MyISAM慢1000倍!默认是1,这就是说每次更新事务都会被提交到磁盘,这是非常消耗资源的,硬盘和内存的速度是明显数量级的差距。

设置为0是最快的,但是很不安全,全部在缓存中,一掉电全没了。

设置为1很不好,每次都去写硬盘,没有必要。

设置为2是比较好的,日志不刷新到磁盘上,只刷新到操作系统缓存上。然后每秒钟写缓存。相对于现在数据库每秒4K条左右的SQL,性能已经可以提高不少。

分享到:
评论

相关推荐

    MySQL性能调优与架构设计(pdf高清)

    MySQL性能调优与架构设计MySQL性能调优与架构设计MySQL性能调优与架构设计MySQL性能调优与架构设计MySQL性能调优与架构设计MySQL性能调优与架构设计MySQL性能调优与架构设计MySQL性能调优与架构设计

    MySQL性能调优与架构设计.pdf

    "MySQL性能调优与架构设计.pdf" 本资源摘要信息是关于 MySQL 数据库软件的性能调优和架构设计的知识点。MySQL 是一个流行的开源数据库管理系统,具有简单高效可靠的特点,广泛应用于各个行业。以下是从给定的文件中...

    MySQL性能调优与架构设计 PDF图书 百度网盘下载链接

    MySQL性能调优与架构设计 PDF图书MySQL性能调优与架构设计 PDF图书

    MySQL性能调优与架构设计

    4. **资源管理**:调整MySQL的配置参数,如缓冲池大小、线程池大小、连接超时等,以适应系统资源和负载情况。 5. **分区与分片**:通过分区可以分散数据,提高查询效率;分片则可以实现水平扩展,将数据分布到多个...

    2021年MySQL性能调优与架构设计整理.pdf

    - **配置调整**:根据实际应用场景调整MySQL配置参数,如buffer pool大小等。 - **硬件优化**:升级硬件设备,如增加内存、使用更快的磁盘等。 #### 五、MySQL架构设计 - **单机部署**:适用于小型应用,易于部署...

    MYSQL查询调优实战

    本文将详细介绍MySQL中几种常用的索引类型,并探讨索引的原理及其在查询调优中的实战应用。 首先,索引是数据库中用来提高数据检索速度的物理结构。索引的实现方式很多,但在MySQL中,常用的索引类型包括B+ Tree ...

    mysql性能调优的方法

    MySQL性能调优是一个复杂而重要的...总的来说,MySQL性能调优是一个全面的过程,涉及SQL优化、索引管理、存储引擎选择、架构设计和参数调整等多个环节。深入理解这些概念,结合实际应用,才能实现数据库的最佳性能。

    MySQL性能调优与架构设计 简朝阳.扫描版

    《MySQL性能调优与架构设计》是一本由简朝阳编著的专业书籍,专注于探讨如何提升MySQL数据库系统的性能并进行高效架构设计。这本书是扫描版,可能包含图像化的文本,适合电子阅读。 MySQL作为世界上最受欢迎的开源...

    MySQL性能调优与架构设计-简朝阳

    首先,MySQL性能调优涉及到诸多方面,包括SQL查询优化、索引策略、存储引擎的选择以及内存参数的调整。在SQL查询优化中,作者可能详细介绍了如何避免全表扫描,利用EXPLAIN分析查询执行计划,以及如何编写高效的JOIN...

    《MySQL性能调优与架构设计》附录--example数据库脚本

    在《MySQL性能调优与架构设计》一书中,附录部分提供了一个名为“example”的数据库创建脚本。这个脚本是用于演示和学习如何构建一个简单的数据库结构,它包含了几个核心表,如event、group_message、group_message_...

    Mysql一些调优资料收集

    MySQL调优是一个涉及多个层面的过程,旨在提升数据库服务器的性能,包括硬件升级、服务器设置优化以及查询优化。这里我们将深入探讨后两者,因为它们对于大多数系统来说更具可操作性。 首先,MySQL服务器调优主要是...

    MYSQL性能调优工具介绍与应用

    ### MySQL性能调优工具介绍与应用 MySQL作为全球最广泛使用的开源关系型数据库之一,在企业级应用中的地位不可动摇。为了确保MySQL能够高效稳定地运行,掌握一系列性能调优工具至关重要。本文将详细介绍多种MySQL...

    JVM优化3(Tomcat参数调优,JVM参数调优,jvm字节码,代码优化).pdf

    本篇文件内容主要介绍了JVM优化的第三部分,重点围绕Tomcat参数调优、JVM参数调优、JVM字节码优化以及代码优化等几个方面。下面是针对这些知识点的详细解释: 1. Tomcat参数调优 在Tomcat参数调优部分,首先介绍了...

    MySQL性能调优与架构设计 PDF中文版全册

    MySQL性能调优与架构设计是数据库管理领域中的一个重要主题,特别是在大数据量和高并发的业务场景下,优化MySQL的性能和架构设计对于系统的稳定性和效率至关重要。本资料集围绕这一主题,提供了PDF中文版全册,旨在...

    MySQL性能调优与架构设计.

    - **参数调整**:根据实际应用场景调整MySQL的各种配置参数,如innodb_buffer_pool_size等。 通过深入理解MySQL的工作原理及其各个组件的功能,结合实际应用场景进行合理的调优和架构设计,可以有效地提升MySQL的...

    MySQL性能调优与架构设计 - 简朝阳.rar_MySQL性能调优与架构设计简朝阳

    以上只是《MySQL性能调优与架构设计》中部分核心知识点的概述,实际内容更加丰富,包括具体的参数调优、性能瓶颈分析、故障排查等多个方面,对于数据库管理员和开发人员来说,都是不可多得的参考资料。通过学习本书...

    MySQL性能调优与架构设计.pdf(文字版,带目录)

    4. 数据库参数调优:通过调整innodb_buffer_pool_size、max_connections、thread_cache_size等系统变量,可适应不同负载情况。 二、MySQL架构设计 1. 主从复制:通过设置主从复制,可以实现读写分离,减轻主库压力...

Global site tag (gtag.js) - Google Analytics