MySQL 性能

标签: Mysql mysql性能 | 发表时间:2012-11-16 03:02 | 作者:水煮沉浮
分享到:
出处:http://www.qinblog.net

这里罗列了一些基本的 MySQL 性能提示,但不是放之四海而皆准,需要根据实际的应用情况而决定。

【设计】

  1. 使用标准化设计(数据库三范式),记住表的联合查询(join)性能不会差
  2. 选择合适的字符集,虽然UTF16无所不能,但需要两倍的存储;UTF8适合各种字符,但比latin1慢,尽可能选用latin1(此条不适合中文)
  3. utf8_general_ci 略快于 utf8_unicode.ci
  4. 字段尽可能使用  NOT NULL
  5. 为所有的 SELECT 查询创建索引
  6. 索引提升查询的性能,但降低插入数据的性能,因此不要做无用的和重复的索引

【查询】

  1. 尽可能使用最小的数据类型,例如一些状态字段用 tinyint 而不是 int
  2. 尽可能避免  IN (…) 查询
  3. 尽可能避免  ORDER BY RAND() 查询
  4. 当你需要在一些唯一索引的表中插入数据前使用 SELECT 进行判断记录是否存在时,请使用 INSERT … ON DUPLICATE KEY UPDATE … 方法来替代.
  5. 如果你的应用需要经常写数据库,那么请使用 InnoDB 引擎,否则用 MyISAM,这里有一个比较的 文章
  6. 不要在大表中使用  LIMIT xxxx1, xxxx2 ,特别是当 xxxx1 参数值特别大的时候,可尽量通过 WHERE 来限制结果集,然后使用  LIMIT xxxx2 方式.
  7. 不使用已被废弃的方法
  8. 避免在 LIKE 查询中使用 % 前缀,例如 LIKE ‘%oschina’ ,这将使索引无效
  9. 如果有大量的数据需要一次性插入,最好对这些 INSERT 语句进行合并以便批量插入
  10. Prefer  GROUP BY over DISTINCT.
  11. 经常浏览系统的慢查询日志  Slow Query Log.
  12. 避免在 WHERE … , LIMIT … , ORDER BY … 等语句中使用表达式和函数计算公式等。
  13. 使用  EXPLAIN … 对你的 SQL 查询进行分析,以便确认是否最优查询
  14. 不要使用  SELECT * … ,只 SELECT 你想要的字段(这点挺麻烦,在 ORM 世界里更是这样)
  15. 尽可能合并小查询为一个大查询

【存储引擎】

  1. 了解各种存储引擎的特点,并根据实际情况进行选择,选择之前在测试平台上做充分测试
  2. Archive old data such as logs in ARCHIVE tables or MERGE tables.
  3. BLACKHOLE 引擎非常快速,特别适用一些繁忙的事务,例如日志

【配置my.cnf】

  1. 提供默认的主键缓冲区大小:  key_buffer = 128M
  2. 提高默认的打开表的缓存个数:  table_cache = 128
  3. 提供默认的排序缓冲区大小:
    sort_buffer_size = 32M
    myisam_sort_buffer_size = 32M
  4. 如果不做复制的话,禁用二进制日志: # log-bin=mysql-bin

相关 [mysql 性能] 推荐:

MySQL 性能

- - 谁主沉浮
这里罗列了一些基本的 MySQL 性能提示,但不是放之四海而皆准,需要根据实际的应用情况而决定. 使用标准化设计(数据库三范式),记住表的联合查询(join)性能不会差. 选择合适的字符集,虽然UTF16无所不能,但需要两倍的存储;UTF8适合各种字符,但比latin1慢,尽可能选用latin1(此条不适合中文).

MySQL性能优化

- sun - IT程序员面试网
在笔试面试中,尤其是像百度,淘宝这些数据量非常大,而且用LAMP架构的公司,数据库优化方面就显得特别重要了. 此外,除了数据库索引之外,在LAMP结果如此流行的今天,数据库(尤其是MySQL)性能优化也是海量数据处理的一个热点. 下面就结合自己的经验,聊一聊MySQL数据库优化的几个方面. 首先,在数据库设计的时候,要能够充分的利用索引带来的性能提升,至于如何建立索引,建立什么样的索引,在哪些字段上建立索引,上面已经讲的很清楚了,这里不在赘述.

Mysql性能优化

- - 数据库 - ITeye博客
MySQL性能优化.   性能优化是通过某些有效的方法来提高MySQL的运行速度,减少占用的磁盘空间. 性能优化包含很多方面,例如优化查询速度,优化更新速度和优化MySQL服务器等.   数据库管理人员可以使用SHOW STATUS语句来查询MySQL数据库的性能. 语法:SHOW STATUE LIKE ‘value’;其中value参数是常用的几个统计参数.

mysql 5.6性能vs mysql 5.5的讨论

- - ITeye博客
这几天老外就mysql 5.6和5.5,MariaDB的benchmark讨论的很热烈,参考http://t.cn/zYoXNND一文,而法国朋友身先士卒,在http://t.cn/zYKgDmk中一连做了多个评测. 1) 在大名顶顶的percona公司的Peter Zaitsev 一文中(http://www.mysqlperformanceblog.com/2013/02/18/is-mysql-5-6-slower-than-mysql-5-5/).

mysql性能优化教程

- coolzsb - caoz的和谐blog

MySQL性能建议者:mysqltuner.pl

- - CSDN博客数据库推荐文章
一些简单的命令可从 --help 查阅. 输出结果简单明了,读者有兴趣可参阅官网博客. 作者:linwaterbin 发表于2013-10-23 0:13:37 原文链接. 阅读:147 评论:0 查看评论.

MySQL性能医生:OrzDBA

- - CSDN博客数据库推荐文章
A    trunk/orzdba工具使用说明.pdf. 需要在代码160行左右配置MySQL的相关验证信息,如username,password,host,port,sock等. ㈠ 查看MySQL响应时间(rt). 在源码161行左右把 /usr/bin/tcprstat 加入默认读取的位置. 再解压orzdba_rt_depend_perl_module.tar.gz,安装rt所依赖的perl模块.

MySQL insert性能优化

- - Rebill's Blog
对于一些数据量较大的系统,面临的问题除了是查询效率低下,还有一个很重要的问题就是插入时间长. 我们就有一个业务系统,每天的数据导入需要4-5个钟. 这种费时的操作其实是很有风险的,假设程序出了问题,想重跑操作那是一件痛苦的事情. 因此,提高大数据量系统的MySQL insert效率是很有必要的. 经过对MySQL的测试,发现一些可以提高insert效率的方法,供大家参考参考.

mysql性能最大化

- - CSDN博客数据库推荐文章
#跳过外部锁定 只对MyISAM. #禁用tcp socket连接,只能使用unix/linux socket连接. #禁用DNS解析,提高连接速度. #跳过授权表,忘记root密码时使用. #服务器关闭一个交互连接前等待的秒数,默认28800. #线程缓存数,直接利用空闲连接来创建新连接,1G  —> 8 2G  —> 16 3G  —> 32 >3G  —> 64.

[转]MySQL性能优化

- -
  IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO 次数是 SQL 优化中需要第一优先考虑,当然,也是收效最明显的优化手段.   2.降低 CPU 计算.   除了 IO 瓶颈之外,SQL优化中需要考虑的就是 CPU 运算量的优化了.