1.InnoDB缓冲池
1)解释
InnoDB缓冲池缓存索引、行的数据、自适应哈希索引、插入缓冲、锁、以及其他内部数据结构。
依赖内存,要求有足够的内存。
2)监控InnoDb缓冲池的内存利用情况
通过show 命令的得到的变量或者Innotop这样的工具监控InnoDB缓冲池的内存利用情况。
3)应对很大缓冲池的方法
预热和关闭会花费很长的时间。
利用Percona Server的快速预热功能,来重新载入缓冲池的页,可以让预热时间减少到几分钟。
2.mysql并发配置
1)InnoDB并发配置
使用innodb_thread_concurrency变量限制并发,他会限制一次性可以有多少线程进入内核,0表示不限制。
这个变量的参考值: 并发值=CPU * 磁盘数量 * 2
2)myisam并发配置
msisam如何删除和插入行
删除操作不会重新整理整个表,他们只是把行标记为删除,在表中留下“空洞”。myisam倾向于在可能的时候填满这些空洞,在插入行时重新利用这些空间。如果没有空洞了,它就把新行插入表的末尾。
配置concurrent_insert 这个变量,打开myisam的并发插入。
0 myisam不允许并发插入,所有插入都会对表加互斥锁。
1 这是默认值。只要表中没有空洞,myisam就允许并发插入。
2 在mysql5.0以及更新版本有效。强制并发插入到表的末尾,即使表中有空洞。如果没有现成从表中读取数据,mysql将把新航放在空洞里,使用这个设置通常会使表更加碎片化。
3.优化blob和text的场景
服务器不能在内存临时表中存储blob值,如果一个查询设计blob值,有需要一个临时表--不过它多小--它都会立即在磁盘上创建临时表。这样效率很低,尤其是对小儿快的查询。临时表可能是查询中最大的开销。
解决方法:
1)通过substring()函数把值转换为varchar
2)让临时表更快一些
最好方式是把他们放在基于内存的文件系统。
网友评论