mysql 注意点

mysql 优化:mysql

每一个innodb 表都要有一个主键
限制表上索引的数量,避免创建重复和冗余索引
注意合理选择复合索引键值的顺序sql

优先选择符合存储须要的最小的数据类型
varchar(N) 中的N 表明的是字符数,而不是字节数
使用UTF8 存储汉字 varchar(255) = 765 个字节
过大的长度会消耗更多的内存
避免使用text,blob 数据类型数据库

避免使用join 关联太多的表
每join 一个表会多占用一部份内存(join_buffer_size)
会产生临时表操做,影响查询效率
mysql 最多容许关联61个表,建议不超过5个函数

减小同数据库的交互次数
数据库更适合处理批量操做
合并多个相同的操做到一块儿,能够提升处理效率优化

使用in 代替or
in 的值 不要超过 500个
in 操做能够有效的利用索引日志

禁止使用 order by rand() 进行随机排序
会把全部符合条件的数据装载到内存进行排序
会消耗大量的CPU 和IO 及内存资源
推荐在程序中获取一个随机值,而后从数据库中获取数据的方式排序

where 从句中禁止对列进行函数转换和计算
对列进行函数转换或计算会致使没法使用索引索引

在明显不会有重复值时使用union all 而不是 union
union 会把全部数据放到临时表中后再进行去重操做
union all 不会再对结果集进行去重操做
super 权限只能留给DBA 处理问题的帐号使用事务

对于程序链接数据库帐号,遵循权限最小原则内存

拆分复杂的大SQL 为多个小SQL
mysql 一个SQL 只能使用一个CPU 进行计算
sql 拆分后能够经过并行执行来提升处理效率

超过100万行的批量写操做,要分批屡次进行操做
大批量操做可能会形成严重的主从延迟
binlog 日志为row 格式是会产生大量的日志
避免产生大事务操做

禁止为程序使用的帐号赋予super 权限 当达到最大链接数限制时,还容许1个有super 权限的用户链接

相关文章
相关标签/搜索