101个MySQL调试和优化技巧

   MySQL是一个功能强大的开源数据库。随着越来越多的数据库驱动的应用程序,人们一直在推动MySQL发展到它的极限。这里是101条调节和优化MySQL安装的技巧。一些技巧是针对特定的安装环境的,但这些思路是通用的。我已经把他们分成几类,来帮助你掌握更多MySQL的调节和优化技巧。

  MySQL 服务器硬件和操作系统调节:

  1. 拥有足够的物理内存来把整个InnoDB文件加载到内存中——在内存中访问文件时的速度要比在硬盘中访问时快的多。

  2. 不惜一切代价避免使用Swap交换分区 – 交换时是从硬盘读取的,它的速度很慢。

  3. 使用电池供电的RAM(注:RAM即随机存储器)。

  4. 使用高级的RAID(注:Redundant Arrays of Inexpensive Disks,即磁盘阵列) – 最好是RAID10或更高。

  5. 避免RAID5(注:一种存储性能、数据安全和存储成本兼顾的存储解决方案) – 确保数据库完整性的校验是要付出代价的。

  6. 将操作系统和数据分区分开,不仅仅是逻辑上,还包括物理上 – 操作系统的读写操作会影响数据库的性能。

  7. 把MySQL临时空间和复制日志与数据放到不同的分区 – 当数据库后台从磁盘进行读写操作时会影响数据库的性能。

  8. 更多的磁盘空间等于更快的速度。

  9. 更好更快的磁盘。

  10. 使用SAS(注: Serial Attached SCSI,即串行连接SCSI)代替SATA(注:SATA,即串口硬盘)。

  11. 较小的硬盘 比 较大的硬盘快,尤其是在RAID配置的情况下。

  12. 使用电池支持的高速缓存RAID控制器。

  13. 避免使用软件磁盘阵列。

  14. 考虑为数据分区使用固态IO卡 (不是磁盘驱动器) – 这些卡能够为几乎任何数量的数据支持2GB/s的写入速度。

  15. 在Linux中设置swappiness的值为0 – 在数据库服务器中没有理由缓存文件,这是一个服务器或台式机的优势。

  16. 如果可以的话,使用 noatime 和 nodirtime 挂载文件系统 – 没有理由更新访问数据库文件的修改时间。

  17. 使用 XFS 文件系统 – 一种比ext3更快、更小的文件系统,并且有许多日志选项, 而且ext3 已被证实与MySQL有双缓冲问题。

  18. 调整 XFS 文件系统日志和缓冲变量 – 为了最高性能标准。

  19. 在 Linux 系统中, 使用 NOOP 或者 DEADLINE IO 定时调度程序 – 同 NOOP 和 DEADLINE定时调度程序相比,这个 CFQ 和 ANTICIPATORY 定时调度程序 显得非常慢。

  20. 使用64位的操作系统 – 对于MySQL,会有更大的内存支持和使用。

  21. 删除服务器上未使用的安装包和守护进程 – 更少的资源占用。

  22. 把使用MySQL的host和你的MySQL host放到一个hosts文件中 – 没有DNS查找。

  23. 切勿强制杀死一个MySQL进程 – 你会损坏数据库和正在运行备份的程序。

  24. 把服务器贡献给MySQL – 后台进程和其他服务能够缩短数据库占用CPU的时间。

  MySQL 配置:

  25. 当写入时,使用 innodb_flush_method=O_DIRECT 来避免双缓冲。

  26. 避免使用 O_DIRECT 和 EXT3 文件系统 – 你将序列化所有要写入的。

  27. 分配足够的 innodb_buffer_pool_size 来加载整个 InnoDB 文件到内存中– 少从磁盘中读取。

  28. 不要将 innodb_log_file_size 参数设置太大, 这样可以更快同时有更多的磁盘空间 – 丢掉多的日志通常是好的,在数据库崩溃后可以降低恢复数据库的时间。

  29. 不要混用 innodb_thread_concurrency 和 thread_concurrency 参数– 这2个值是不兼容的。

  30. 分配一个极小的数量给 max_connections 参数 – 太多的连接会用尽RAM并锁定MySQL服务。

  31. 保持 thread_cache 在一个相对较高的数字,大约 16 – 防止打开连接时缓慢。

  32. 使用skip-name-resolve参数 – 去掉 DNS 查找。

  33.如果你的查询都是重复的,并且数据不常常发生变化,那么可以使用查询缓存。但是如果你的数据经常发生变化,那么使用查询缓存会让你感到失望。

  34.增大temp_table_size值,以防止写入磁盘

  35.增大max_heap_table_size值,以防止写入磁盘

  36.不要把sort_buffer_size值设置的太高,否则的话你的内存将会很快耗尽

  37.根据key_read_requests和key_reads值来决定key_buffer的大小,一般情况下key_read_requests应该比key_reads值高,否则你不能高效的使用key_buffer

  38.将innodb_flush_log_at_trx_commit设置为0将会提高性能,但是如果你要保持默认值(1)的话,那么你就要确保数据的完整性,同时你也要确保复制不会滞后。

  39.你要有一个测试环境,来测试你的配置,并且在不影响正常生产的情况下,可以常常进行重启。

  MySQL模式优化:

  40. 保持你的数据库整理性。

  41. 旧数据归档 – 删除多余的行返回或搜索查询。

  42. 将您的数据加上索引.

  43. 不要过度使用索引,比较与查询.

  44. 压缩文字和BLOB数据类型 – 以节省空间和减少磁盘读取次数.

  45. UTF 8和UTF16都低于latin1执行效率.

  46. 有节制地使用触发器.

  47. 冗余数据保持到最低限度 – 不重复不必要的数据.

  48. 使用链接表,而不是扩展行.

  49. 注意数据类型,在您的真实数据中,尽可能使用最小的一个.

  50. 如果其他数据经常被用于查询时,而BLOB / TEXT数据不是,就把BLOB / TEXT数据从其他数据分离出来.

时间: 2024-10-29 05:31:45

101个MySQL调试和优化技巧的相关文章

Mysql查询语句优化技巧_Mysql

索引优化,查询优化,查询缓存,服务器设置优化,操作系统和硬件优化,应用层面优化(web服务器,缓存)等等.这里的记录的优化技巧更适用于开发人员,都是从网络上收集和自己整理的,主要是查询语句上面的优化,其它层面的优化技巧在此不做记录. 查询的开销指标: 执行时间 检查的行数 返回的行数 建立索引的几个准则: (1).合理的建立索引能够加速数据读取效率,不合理的建立索引反而会拖慢数据库的响应速度. (2).索引越多,更新数据的速度越慢. (3).尽量在采用MyIsam作为引擎的时候使用索引(因为My

101个MySQL优化技巧和提示_Mysql

MySQL是一个功能强大的开源数据库.随着越来越多的数据库驱动的应用程序,人们一直在推动MySQL发展到它的极限.这里是101条调节和优化MySQL安装的技巧.一些技巧是针对特定的安装环境的,但这些思路是通用的.我已经把他们分成几类,来帮助你掌握更多MySQL的调节和优化技巧. MySQL 服务器硬件和操作系统调节: 1. 拥有足够的物理内存来把整个InnoDB文件加载到内存中--在内存中访问文件时的速度要比在硬盘中访问时快的多. 2. 不惜一切代价避免使用Swap交换分区 – 交换时是从硬盘读

101个MySQL的调节和优化的提示

  MySQL是一个功能强大的开源数据库.随着越来越多的数据库驱动的应用程序,人们一直在推动MySQL发展到它的极限.这里是101条调节和优化 MySQL安装的技巧.一些技巧是针对特定的安装环境的,但这些思路是通用的.我已经把他们分成几类,来帮助你掌握更多MySQL的调节和优化技巧. MySQL 服务器硬件和操作系统调节: 1. 拥有足够的物理内存来把整个InnoDB文件加载到内存中--在内存中访问文件时的速度要比在硬盘中访问时快的多. 2. 不惜一切代价避免使用Swap交换分区 – 交换时是从

15 个有用的 MySQL/MariaDB 性能调整和优化技巧

MySQL 是一个强大的开源关系数据库管理系统(简称 RDBMS).它发布于 1995 年(20年前).它采用结构化查询语言(SQL),这可能是数据库内容管理中最流行的选择.最新的 MySQL 版本是 5.6.25,于 2015 年 5 月 29 日发布. 关于 MySQL 一个有趣的事实是它的名字来自于 Michael Widenius(MySQL 的创始人)的女儿" My".尽管有许多关于 MySQL 有趣的传闻,不过本文主要是向你展示一些有用的实践,以帮助你管理你的 MySQL

解析MySQL数据库性能优化的六大技巧_Mysql

数据库表表面上存在索引和防错机制,然而一个简单的查询就会耗费很长时间.Web应用程序或许在开发环境中运行良好,但在产品环境中表现同样糟糕.如果你是个数据库管理员,你很有可能已经在某个阶段遇到上述情况.因此,本文将介绍对MySQL进行性能优化的技巧和窍门. 1.存储引擎的选择如果数据表需要事务处理,应该考虑使用InnoDB,因为它完全符合ACID特性.如果不需要事务处理,使用默认存储引擎MyISAM是比较明智的.并且不要尝试同时使用这两个存储引擎.思考一下:在一个事务处理中,一些数据表使用Inno

101个MySQL的配置和优化的提示_Mysql

MySQL是一个功能强大的开源数据库.随着越来越多的数据库驱动的应用程序,人们一直在推动MySQL发展到它的极限.这里是101条调节和优化 MySQL安装的技巧.一些技巧是针对特定的安装环境的,但这些思路是通用的.我已经把他们分成几类,来帮助你掌握更多MySQL的调节和优化技巧. MySQL 服务器硬件和操作系统调节: 1. 拥有足够的物理内存来把整个InnoDB文件加载到内存中--在内存中访问文件时的速度要比在硬盘中访问时快的多.2. 不惜一切代价避免使用Swap交换分区 – 交换时是从硬盘读

十大MySQL优化技巧

WEB开发者不光要解决程序的效率问题,对数据库的快速访问和相应也是一个大问题.希望本文能对大家掌握MySQL优化技巧有所帮助. 1. 优化你的MySQL查询缓存 在MySQL服务器上进行查询,可以启用高速查询缓存.让数据库引擎在后台悄悄的处理是提高性能的最有效方法之一.当同一个查询被执行多次时,如果结果是从缓存中提取,那是相当快的. 但主要的问题是,它是那么容易被隐藏起来以至于我们大多数程序员会忽略它.在有些处理任务中,我们实际上是可以阻止查询缓存工作的. 1. // query cache d

关键的十个MySQL性能优化技巧

与所有的关系型数据库一样,MySQL仿佛是一头让人难以琢磨的怪兽.它会随时停摆,让应用限于停滞,或者让你的业务处于危险之中. 事实上,许多最常见的错误都隐藏在MySQL性能问题的背后.为了确保你的MySQL服务器能够一直处于全速运行的状态,提供持续稳定的性能,杜绝这些错误是非常重要的.然而,这些错误又往往隐藏在工作负载和配置问题之中. 幸运的是,许多MySQL性能问题都有着相似的解决方案,这使得排除故障与调整MySQL成为了一项易于管理的任务.以下就是10个让MySQL发挥最佳性能的技巧. 1.

php导入大量数据到mysql性能优化技巧_php技巧

本文实例讲述了php导入大量数据到mysql性能优化技巧.分享给大家供大家参考.具体分析如下: 在mysql中我们结合php把一些文件导入到mysql中,这里就来分享一下我对15000条记录进行导入时分析与优化,需要的朋友可以参考一下. 之前有几篇文章,说了最近tiandi在帮朋友做一个小项目,用于统计电话号码的,每次按需求从数据库里随机生成打包的电话号码,然后不停地让人打这些电话号码推销产品(小小鄙视一下这样的行为).但是朋友要求帮忙,咱也不能不帮啊,是吧.程序两个星期前已经做好,测试完毕交工