ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Myisam & InnoDB 优化参数

Myisam & InnoDB 优化参数

原创 Linux操作系统 作者:markzy5201190 时间:2012-08-08 22:43:47 0 删除 编辑
Myisam 优化:
key_buffer_size 分配给MyISAM索引缓存的内存总数
● query_cache_size 控制分配给查询缓存的内存总量
● long_query_time 设定慢查询时间
● external-locking 禁止使用外部锁,可预防死锁
● back_log 临时停止响应新请求前在短时间内可以堆起多少请求。如果你需要在短时间内允许大量连接,可以增加该数值
● table_cache 缓存数据表的数量,避免重复打开表的开销
● thread_cache_size 缓存可重用线程数,见笑创建新线程的开销
● sort/join/read buffer size 分配给每个线程中处理排序/扫描表连接及索引的内存
● skip-bdb 等,禁用不必要的引擎

InnoDB 优化:
● 如果数据库CPU使用率小于70%,则MySQL的压力可能在于磁盘
因素,可能有太多的事务和提交,或者缓冲池太小。可以另缓冲池更大一些,但不要设置缓冲池等于或超过物理内存的80%
● 把多个修改(INSERT/UPDATE/DELETE)放在一个事务里。但是也要注意有此产生的效率问题
● innodb_flush_log_at_trx_commit 设置为0(每秒刷新),1(实时刷新),2(只写日志文件,不刷新到磁盘)
● 使用较大日志文件及较大日志缓冲
● 往innoDB表导入数据时,先关闭autocommit模式,否则会实时刷新数据到磁盘
● 更多的请查看:http://imysql.cn/?q=node/116 innodb_buffer_pool_size 控制分配给包括集群数据以及
次要索引页的Innodb缓存的内存总数,默认16MB
● innodb_additional_mem_pool_size 控制分配给对Innodb内部数据字典进行排序所需的缓冲,默认1MB
● innodb_log_buffer_size 控制分配给对Innodb存储提前写日志记录所需的缓冲,默认1MB
● innodb_log_files_in_group 在日志组里日志文件的数目。InnoDB以循环方式写进文件。默认是2(推荐)
● innodb_log_file_size 默认是5MB。建议值从1MB到N分之一缓冲池大小,其中N是组里日志文件的数目

 其他优化:
char 型 vs int 型
● 独立索引 vs 联合索引
● 记录 slow queries
● 使用存储过程、触发器、视图
● 定期执行optimize / analyze table
● 针对Innodb表,尽量不执行 SELECT COUNT(*) 语句
● 善用 EXPLAIN来帮助你分析查询优化情况
● 如果需要对一个较大的且并发读写较多的数据表做 GROUP BY 等统计操作,建议使用摘要表来存储统计信息,定期更新统计表
表连接时,连接字段的类型最好一致(包括字段长度),这样的话索引速度快多了
● 大部分情况下,字符类型的字段索引值需要一部分
● 尽量使用最合适的数据类型,不要浪费空间和效率
● 执行查询时,尽量不使用外部函数,因为这样的话就无法使用可能存在的索引
● 把拖沓复杂,速度慢的的查询分解成多个简洁明了的查询
● 在索引字段上使用 LIKE 查询时,左边不要使用 '%' 修饰符,这样就可以利用索引,否则无法使用索引.如 ... `name` LIKE 'yejr%'
● 对于频繁更改的MyISAM表,应尽量避免更新所有变长字段(VARCHAR、BLOB和TEXT)
● 分摊压力,使用集群/复制
● 查询时如果有 ORDER BY分句

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26855487/viewspace-740413/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-04-05

  • 博文量
    82
  • 访问量
    472458