一.myisam的IO调优

1.myisam通常在每次写入后把索引的改变刷写到磁盘上.所以批处理通常会更快点.做到这点,可以通过LOCK TABLES,他可以把写入控制到对表解锁.

还可以用delay_key_write变量来延迟索引的写入,如果使用他,只有在表关闭的时候写入键缓存.它有以下选项:

OFF 每次索引改变后,写入磁盘
ON  延迟键开启,但只针对使用DELAY_KEY_WRITE选项创建的表有效
ALL 所有myisam表都是用延迟键写入

延迟键开启,通常不能带来性能上的飞跃,在数据量小,读取命中率较好并且写入命中率较差的时候效果最好.但也带来一些负面影响
a.服务器崩溃并且数据没被刷写到磁盘上,索引就会损坏.
b.mysql需要更多的时间来关闭表
c.FLUSH TABLES可能需要更多的时间
d.查询要等待键缓存区释放空间而停止

2.myisam配置从损坏中恢复

myisam_recover(命令行参数是myisam_recover_options)控制了myisam查找和修复表的方式

有以下值:
DEFAULT:默认或不设置,只恢复
BACKUP:把数据文件备份到.BAK文件中
FORCE:即使.MYD丢失数据多于一行,恢复也会继续
QUICK:除非有删除的数据才会跳过恢复.

可以使用多重设置,中间用逗号隔开,比如BACKUP,FORCE

二.innodb的IO调优
1.innodb日志文件总体大小由innodb_log_file_size和innodb_log_files_in_group控制,并且他们对写入影响极大.默认值分别是5m和10m.

2.控制缓冲大小的变量是innodb_log_buffer_size,默认是1m,推荐设置值是1m到8m

3.innodb_flush_method可以配置innodb实际与文件系统进行交互的方式

4.配置表空间
innodb_data_file_path定义表空间文件
innodb_data_home_dir定义在目录中

innodb_data_file_path = ibdata1:1G;ibdata2:1G;ibdata3:1G
上面的例子在3个文件中创建了3GB表空间

下面的例子限制延伸文件最大为2GB
...ibdata3:1G:autoextend:max:2G

5.使用innodb_file_per_table使每个表使用一个文件,以表名.ibd保存数据.但坏处是表空间的碎片都放在了.ibd中,这对于很小的表尤其会成为一个问题.因为innodb的页面大小是16kb,即使表只有1kb,也会需要至少16kb的磁盘空间

三.myisam的并发调优
1.可以使用concurrent_insert变量配置myisam的并发插入行为,
0 不允许并发插入
1 默认值,只要表中没有空缺,允许并发插入
3 强制并发插入到表尾

四.innodb并发调优
1.控制并发的的方式是使用innodb_thread_concurrency变量,它限制了有多少线程进入内核.0为不限制
并发 = cpu数量*磁盘数量*2

2.innodb_commit_concurrency决定了某一时刻有多少线程提交,但innodb_thread_concurrency被设置为一个较小值,造成大量线程不佳时,可以设置该值

MySQL并发调优和IO调优的更多相关文章

  1. mysql日常运维与参数调优

    日常运维 DBA运维工作 日常 导数据,数据修改,表结构变更 加权限,问题处理 其它 数据库选型部署,设计,监控,备份,优化等 日常运维工作: 导数据及注意事项 数据修改及注意事项 表结构变更及注意事 ...

  2. MySQL 优化之 Linux系统层面调优

    MySQL 一般运行于Linux系统中.对于MySQL的调优一般分为Linux操作系统层面的调优和MySQL层面的调优(当然还有架构层面.业务层面.应用程序层面的调优).操作系统主要是管理和分配硬件资 ...

  3. MySQL管理之道:性能调优、高可用与监控》迷你书

    MySQL管理之道:性能调优.高可用与监控>迷你书 MYSQL5.5.X主要改进 1.默认使用innodb存储引擎2.充分利用CPU多核处理能力3.提高刷写脏页数量和合并插入数量,改善I/O4. ...

  4. MySQL管理之道:性能调优、高可用与监控内置脚本

    MySQL管理之道:性能调优.高可用与监控内置脚本 随书附送脚本 keepalive配置文件和脚本开源工具pssh批量管理服务器(python) 下载地址 http://files.cnblogs.c ...

  5. IO 调优

    磁盘优化 1.增加缓存 2.优化磁盘的管理系统 3.设计合理的磁盘存储数据块 4.应用合理的RAID策略 TCP网络参数调优 网络IO优化 1.减少网络交互次数 2.减少网络传输数据量的大小 3.尽量 ...

  6. MySQL基础普及《MySQL管理之道:性能调优、高可用与监控》

    最近工作的内容涉及MySQL运维内容,陆陆续续读了几本相关的书,其中一本是<MySQL管理之道:性能调优.高可用与监控>. 内容涵盖性能调优(包括sql优化等).备份.高可用,以及读写分离 ...

  7. MySQL管理之道,性能调优,高可用与监控(第二版)pdf下载

    MySQL管理之道,性能调优,高可用与监控(第二版) 书中内容以实战为导向,所有内容均来自于笔者多年实践经验的总结和新知识的拓展,同时也针对运维人员.DBA等相关工作者会遇到的有代表性的疑难问题给出了 ...

  8. Spark(六)Spark之开发调优以及资源调优

    Spark调优主要分为开发调优.资源调优.数据倾斜调优.shuffle调优几个部分.开发调优和资源调优是所有Spark作业都需要注意和遵循的一些基本原则,是高性能Spark作业的基础:数据倾斜调优,主 ...

  9. 【Spark篇】---Spark调优之代码调优,数据本地化调优,内存调优,SparkShuffle调优,Executor的堆外内存调优

    一.前述 Spark中调优大致分为以下几种 ,代码调优,数据本地化,内存调优,SparkShuffle调优,调节Executor的堆外内存. 二.具体    1.代码调优 1.避免创建重复的RDD,尽 ...

随机推荐

  1. Redis/SSDB+Twemproxy的配置与使用(Mac/Linux平台)

    对于redis而已,相信不少的后台开发人员一直都在使用,相比memcache而已,redis不仅可以作为key-value缓存使用,而且提供了丰富的数据结构如set.list.map等,能够实现很多复 ...

  2. [原]网站跨站点脚本,Sql注入等攻击的处理

    从360安全论坛里找到的一段代码,经过整理封装,直接在站点Global.asax文件或写一个HttpModule来拦截恶意请求即可: http://bbs.webscan.360.cn/forum.p ...

  3. 利用SQLiteOpenHelper来管理SQLite数据库 (转)

    转载自 利用SQLiteOpenHelper来管理SQLite数据库 http://blog.csdn.net/conowen/article/details/7306545 Android学习笔记( ...

  4. javascript优化--03高质量编码

    使用Object的直接量实例构造轻量级的字典: 使用for/in循环,使用对象字面量来构建,并确保不增加Object.prototype属性来导致for/in循环:(考虑到兼容性,如Array.pro ...

  5. BZOJ3733 : [Pa2013]Iloczyn

    首先将$n$的约数从小到大排序,设$dfs(x,y,z)$表示当前可以选第$x$个到第$m$个约数,还要选$y$个,之前选的乘积为$z$是否可能. 爆搜的时候,如果从$x$开始最小的$y$个相乘也超过 ...

  6. BZOJ3560 : DZY Loves Math V

    因为欧拉函数是非完全积性函数,所以可以考虑对每个数进行分解质因数,将每个质数的解乘起来即可. 对于一个质数$p$,设它在各个数中分别出现了$b_1,b_2,...b_n$次,那么由生成函数和欧拉函数的 ...

  7. BZOJ3825 : [Usaco2014 Nov]Marathon

    不跳过任何点的路程=dis(l,l+1)+dis(l+1,l+2)+...+dis(r-2,r-1)+dis(r-1,r) 要跳过一个点i,则要最小化dis(i,i+2)-dis(i,i+1)-dis ...

  8. 【wikioi】1907 方格取数3(最大流+最大权闭合子图)

    http://www.wikioi.com/problem/1907/ 这题我一开始想到的是状压,看到n<=30果断放弃. 然后也想到了黑白染色,然后脑残了,没想到怎么连边. 很简单的一题 黑白 ...

  9. Java中正则表达式、模式匹配与信息抽取

    引言 记得几年前在做网页爬虫后的信息抽取时,针对网页源码中隐藏的要提取的信息,比如评论.用户信息等属性信息,直接利用HtmlParser得到.如此做倒是简单,不过利用的是网页的规范的tag标记.其实j ...

  10. eWebeditor编辑器上传图片的设置程序

    protected void Button1_Click(object sender, EventArgs e) { if (this.uploadfile.PostedFile.FileName.E ...