Tag - 优化

DB MySQL 优化 索引    2017-03-26 22:10:18    939

分区表

建议:
1. 如果要进行分区的表有主键或者唯一键,那么分区键必须包含这个主键或唯一键,否则无法创建分区表
2.

索引

  1. 最适合索引的列是出现在where子句中的列,或者连接子句中指定的列
  2. 使用唯一索引:索引的列的基数越大,索引的效果就越好。如只包含M和F,则索引效果不大
  3. 使用短索引:如果对字符串列进行索引,应该制定一个前缀长度(如果前缀长度范围内,多数值是唯一的)
  4. 不要过度索引:索引都需要占用磁盘空间,会降低写性能,会降低修改的性能(修改表内容时,索引必须进行更新,有时可能需要重构)
  5. 5.

配置文件

  1. 慢查询日志
  2. 使用缓存查询,当表更改(结构和数据)后,查询缓存值的相关条目会被清空
  1. have_query_cache 是否已配置高速缓存(默认为true
  2. query_cache_size 缓存区大小,单位MB,如:16M
  3. query_cache_type 变量值从0~2
  4. 0或者off(缓存关闭)
  5. 1on(缓存打开,使用SQL_NO_CACHE提示的SELECT除外)
  6. 2或者demand(只有带SQL_CACHEselect语句提供高速缓存)
  7. query_cache_limit 单个查询能够使用的缓存大小,默认1M

InnoDB内存优化

  1. innodb_buffer_pool_size

    InnoDB 存储引擎表数据和索引数据的最大缓存区大小(同时为数据块和索引块提供数据缓存),此值越大,缓存命中率就越高,访问InnoDB表需要的磁盘IO就越少,性能就越高。在一个专用的数据库服务器上,可以将80%的物理内存分配给innodb_buffer_pool_size,但是不要太大,以免造成页交换

  2. innodb_buffer_pool_instances

    默认值是1,表示InnoDB缓存池被划分到一个区域。适当地增加该参数(例如将该参数值设置为2),此时InnoDB被划分成为两个区域,可以提升InnoDB的并发性能。如果InnoDB缓存池被划分成多个区域,建议每个区域不小