积极答复者
频繁插入数据带来的瓶颈问题

问题
-
在一个繁忙的OLTP系统中,多个进程向一个表(没有分区, clustered key符合unique,narrow,statisc,ever-increasing的要求)插入数据, 在i/o不是瓶颈的情况下, 会不会产生数据页级别的瓶颈? 我是指latch: 多个进程插入的数据会被分配到同一个数据页,造成同一个数据页的latch的竞争.
如果存在这种可能,一般在多频繁的情况下会有这种情况发生? 这可能和单个行的大小有关系,有没有一个基准值呢?
谁能给些资料,谢谢
有dba的职位吗(北京的),请联系我 stswordman#hotmail.com
答案
-
- 已标记为答案 LiweiyinMicrosoft employee, Moderator 2010年12月17日 16:14
全部回复
-
没遇到这种情况
通常瓶颈都是在i/O上,一般要求在这种情况下对于大批量输入插入,需要设置合理的聚集索引来避免I/O问题。
聚集索引的好坏直接关系到你数据插入的时候写入页,如果能够均匀分布在表的各个页上,那么一般不会引起问题,但是如果集中在某个页上,可能形成I/O瓶颈,这个情况称之为“热点”。
比如,如果数据表是某种日志,写入频繁,如果将日志的日期作为聚集索引,则导致所有的插入都将集中在表的尾部,这个会导致这个区域写入压力很大,造成i/O瓶颈。最好是设置其他字段作为聚集索引,比如日志类别,这样可以很好的分摊磁盘I/O。
ps,看过一个有趣的测试,在100G的数据量下,数据库文件分为8个的时候读写效率最高。
family as water -
- 已标记为答案 LiweiyinMicrosoft employee, Moderator 2010年12月17日 16:14