最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
MySQL手册版本 5.0.20-MySQL优化(四) (1)(4)
时间:2022-07-02 09:35:46 编辑:袖梨 来源:一聚教程网
可以在锁表后,一起执行几个语句来加速 INSERT 操作:
LOCK TABLES a WRITE;
INSERT INTO a VALUES (1,23),(2,34),(4,33);
INSERT INTO a VALUES (8,26),(6,29);
UNLOCK TABLES;
这对性能提高的好处在于:直到所有的 INSERT 语句都完成之后,索引缓存一次性刷新到磁盘中。通常情况是,多有少次 INSERT 语句就会有多数次索引缓存刷新到磁盘中的开销。如果能在一个语句中一次性插入多个值的话,显示的锁表操作也就没必要了。对事务表而言,用 BEGIN/COMMIT 代替 LOCK TABLES 来提高速度。锁表也回降低多次连接测试的总时间,尽管每个独立连接为了等待锁的最大等待时间也会增加。例如:
Connection 1 does 1000 inserts
Connections 2, 3, and 4 do 1 insert
Connection 5 does 1000 inserts
如果没有锁表,则连接2,3,4会在1,5之前就做完了。如果锁表了,则连接2,3,4可能在1,5之后才能完成,但是总时间可能只需要40%。MySQL的 INSERT, UPDATE, DELETE 操作都非常快,不过在一个语句中如果有超过5个插入或者更新时最好加锁以得到更好的性能。如果要一次性做很多个插入,最好是在每个循环(大约1000次)的前后加上 LOCK TABLES 和 UNLOCK TABLES,从而让其他进程也能访问数据表;这么做性能依然不错。INSERT 总是比 LOAD DATA INFILE 插入数据来得慢,因为二者的实现策略有着分明的不同。
想要让 MyISAM 表更快,在 LOAD DATA
INFILE 和 INSERT 时都可以增加系统变量 key_buffer_size 的值,详情请看"7.5.2 Tuning Server Parameters"。
7.2.13 加速 UPDATE
UPDATE 语句的优化和 SELECT 一样,只不过它多了额外的写入开销。写入的开销取决于要更新的记录数以及索引数。如果索引没有发生变化,则就无需更新。
相关文章
- 快手网页版在线登录观看入口-快手网页版一键登录观看 03-23
- 锤子终极奥义 俯爆压头灯实战全解析 03-23
- 穿越火线火麒麟突刺关闭方法是什么 03-23
- 12306官网订票余票查询-12306余票查询详细步骤 03-23
- 生化危机4双爪子怪打法是什么 03-23
- mx动漫APP下载安卓最新版本-mx动漫正版安装包免费下载 03-23