日期:2012-06-02 15:12:00 来源:本站整理
MySQL 大数据量快速插入办法和语句优化分享[MySQL防范]
本文“MySQL 大数据量快速插入办法和语句优化分享[MySQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
锁定也将降低多衔接测试的整体时间,固然因为它们等候锁定最大等候时间将上升.比方:
复制代码 代码以下:
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%.
INSERT、UPDATE和DELETE操作在MySQL中是很快的,通过为在一行中多于大约5次持续不断地插入或更新的操作加锁,可以得到更好的整体性能.假如在一行中举行多次插入,可以履行LOCK TABLES,随后当即履行UNLOCK TABLES(大约每1000行)以答应别的的线程拜候表.这也会得到好的性能.
INSERT装载数据比LOAD DATA INFILE要慢得多,即便是利用上述的战略.
为了对LOAD DATA INFILE和INSERT在MyISAM表得到更快的速度,通过增添key_buffer_size系统变量来扩大 键高速缓冲区.
INSERT语法
复制代码 代码以下:
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
VALUES ({expr | DEFAULT},...),(...),...
[ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
或:
复制代码 代码以下:
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name
SET col_name={expr | DEFAULT}, ...
[ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
或:
复制代码 代码以下:
INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
SELECT ...
[ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
1、DELAYED 的利用
利用耽误插入操作DELAYED疗养符利用于INSERT和REPLACE语句.当DELAYED插入操作到达的时刻,服务器把数据行放入一个行列中,并当即给客户端返回一个状况信息,这样客户端便可以在数据表被真正地插入记录之前持续举行操作了.假如读取者从该数据表中读取数据,行列中的数据就会被保持着,直到没有读取者为止.
接着服务器开始插入耽误数据行(delayed-row)行列中的数据行.在插入操作的同时,服务器还要查抄能否有新的读取恳求到达和等候.假若有,耽误数据行行列就被挂起,答应读取者持续操作.当没有读取者的时刻,服务器再次开始插入耽误的数据行.这个历程一向举行,直到行列空了为止.
几点要注意事项:
INSERT DELAYED应当仅用于指定值清单的INSERT语句.服务器忽视用于INSERT DELAYED...SELECT语句的DELAYED.服务器忽视用于INSERT DELAYED...ON DUPLICATE UPDATE语句的DELAYED.
因为在行被插入前,语句立即返回,所以您不能利用LAST_INSERT_ID()来获得AUTO_INCREMENT值.AUTO_INCREMENT值大概由语句生成.
关于SELECT语句,DELAYED行不可见,直到这些行确切被插入了为止.
DELAYED在从属复制服务器中被忽视了,因为DELAYED不会在从属服务器中产生与主服务器不一样的数据.注意,目前在行列中的各行只保存在存储器中,直到它们被插入到表中为止.这意味着,假如您强行中止了mysqld(比方,利用kill -9)大概假如mysqld不测终止,则全部没有被写入磁盘的行城市丧失
以上是“MySQL 大数据量快速插入办法和语句优化分享[MySQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论