Mysql优化(出自官方文档) - 第七篇
Mysql优化(出自官方文档) - 第七篇
Optimizing Data Change Statements
主要涉及到三种操作:INSERT, UPDATE
和DELETE
1 Optimizing INSERT Statements
尽量将多次小操作合并为,这样子,就只会产生一次连接并且数据一次性发给服务器, 而且,也只有在操作最后才会进行索引更新和一致性检查。
根据预估,通常来讲,一次插入操作所耗费的时间比例如下:
- 网络连接(3)
- 发送请求给服务器(2)
- 解析用户请求(2)
- 插入行(1,特指插入一个单位行)
- 插入索引(1,特指插入一个索引)
- 关闭(1)
因此,你可以采取以下方式来优化插入操作:
如果插入多行,那么使用
INSERT
语句一次性插入多行的功能,这样子速度会远高于单行插入,并且,调整bulk_insert_buffer_size
参数,也可以使得插入操作更快。如果数据是来自于一个文本文件,那么使用
LOAD DATA
命令,该命令通常比INSERT
操作要快20倍。尽量利用那些含有默认值的列,这样子可以减少Mysql的解析和插入开销。
See Section 8.5.5, “Bulk Data Loading for InnoDB Tables” for tips specific to
InnoDB
tables.See Section 8.6.2, “Bulk Data Loading for MyISAM Tables” for tips specific to
MyISAM
tables.
2 Optimizing UPDATE Statements
UPDATE
语句的优化类似于SELECT
,只是多了一个写入操作;对于写入操作,和INSERT
类似,一次性进行多行更新速度将比单行更新快很多。
3 Optimizing DELETE Statements
注:官方文档对于DELETE操作只涉及到了MyISAM表,对于InnoDB部分应该是通用的。
对于MyISAM
表,删除行操作的开销通常来讲主要由需要更改的索引数量来决定,为了加快删除速度,可以增大key_buffer_size
系统变量。
如果需要删除表中的所有行,那么使用TRUNCATE
来代替DELETE FROM
操作,TRUNCATE
不是事务安全的,如果碰到其他事务或者表锁,那么会跑出错误,所以速度会比DELETE FROM
快很多。
Mysql优化(出自官方文档) - 第七篇的更多相关文章
- Mysql优化(出自官方文档) - 第九篇(优化数据库结构篇)
目录 Mysql优化(出自官方文档) - 第九篇(优化数据库结构篇) 1 Optimizing Data Size 2 Optimizing MySQL Data Types 3 Optimizing ...
- Mysql优化(出自官方文档) - 第二篇
Mysql优化(出自官方文档) - 第二篇 目录 Mysql优化(出自官方文档) - 第二篇 1 关于Nested Loop Join的相关知识 1.1 相关概念和算法 1.2 一些优化 1 关于Ne ...
- Mysql优化(出自官方文档) - 第一篇(SQL优化系列)
Mysql优化(出自官方文档) - 第一篇 目录 Mysql优化(出自官方文档) - 第一篇 1 WHERE Clause Optimization 2 Range Optimization Skip ...
- Mysql优化(出自官方文档) - 第三篇
目录 Mysql优化(出自官方文档) - 第三篇 1 Multi-Range Read Optimization(MRR) 2 Block Nested-Loop(BNL) and Batched K ...
- Mysql优化(出自官方文档) - 第五篇
目录 Mysql优化(出自官方文档) - 第五篇 1 GROUP BY Optimization 2 DISTINCT Optimization 3 LIMIT Query Optimization ...
- Mysql优化(出自官方文档) - 第八篇(索引优化系列)
目录 Mysql优化(出自官方文档) - 第八篇(索引优化系列) Optimization and Indexes 1 Foreign Key Optimization 2 Column Indexe ...
- Mysql优化(出自官方文档) - 第十二篇(优化锁操作篇)
Mysql优化(出自官方文档) - 第十二篇(优化锁操作篇) 目录 Mysql优化(出自官方文档) - 第十二篇(优化锁操作篇) 1 Internal Locking Methods Row-Leve ...
- Mysql优化(出自官方文档) - 第十篇(优化InnoDB表篇)
Mysql优化(出自官方文档) - 第十篇(优化InnoDB表篇) 目录 Mysql优化(出自官方文档) - 第十篇(优化InnoDB表篇) 1 Optimizing Storage Layout f ...
- Mysql优化(出自官方文档) - 第六篇
Mysql优化(出自官方文档) - 第六篇 目录 Mysql优化(出自官方文档) - 第六篇 Optimizing Subqueries, Derived Tables, View Reference ...
随机推荐
- Markdown编辑器怎么用
Markdown编辑器怎么用 1.代码块 快速创建一个代码块 // 语法: // ```+语言名称,如```java,```c++ 2.标题 语法:#+空格+标题名字,一个#表示一级标题,两个#表示二 ...
- JavaWeb——JDBC
内容索引 1. JDBC基本概念 2. 快速入门 3. 对JDBC中各个接口和类详解 JDBC: 1. 概念:Java DataBase Connectivity Java 数据库连接, Java语言 ...
- "mysql第一次查询很慢,以后就很快"的解决方案
背景 有个项目使用的mysql数据库,第一次查询很慢,大约15s左右出结果,再次查询就很快了. 分析 后面变快的原因是mysql有缓存机制,但是过上一段时间不使用缓存会过期,我个人测了一下2~3分钟一 ...
- Solon Aop 特色开发(1)注入或手动获取配置
常规操作,先启动 Solon public class App{ public void main(String[] args){ Solon.start(App.class, args); } } ...
- C++PRIMER第五版练习题答案第一章
C++PRIMER第五版练习题答案第一章 应该有很多小伙伴和我一样,闲来无事买了本C++的书自己啃,课后的练习题做的很揪心,这里我分享下我写的答案,希望能帮助到你,提供源码,就不跑了哈,毕竟现在是第一 ...
- 8.Linux的目录管理
3 Linux目录管理 3.1 Linux 文件与目录管理 3.1.1 目录常用命令 ls: 列出目录 cd: 切换目录 pwd: 显示目前的目录 mkdir:创建一个新的目录 rmdir:删除一个空 ...
- OC与Swift混编,三种场景的实现方式
多语言并存时期,混编成为一种必须的方式 ,在多场影中实现OC和Swift语言的并存原来是如此简单 第一种场景,App中实现混编 创建桥接文件*.h 新建一个桥接文件,New File 选择 Heade ...
- Could not open device at /dev/ipmi0
Could not open device at /dev/ipmi0 分类: LINUX 2013-09-02 17:01:37 Could not open device at /dev/ip ...
- 7.json&pickle及软件目录结构规范
json(可以序列化简单数据类型,用于不同语言之间的数据交换传输)import jsonjson.dumps() 写入json.loads() 读取json.dump(info,f) == f.wri ...
- 3. servlet 和 springmvc框架关系
在springmvc上我们会编写很多相关的配置 编写springmvc.xml 配置映射器 配置 处理适配器 ... web.xml 配置前端控制器 (DispatcherServlet) 官网: h ...