TSQL--自增键和索引对表的插入效率测试
问题描述:
数据库操作中,需要对表频繁插入数据,但发现插入效率不高。
解决思路:
将数据缓存在服务器上,积攒到一定条数后批处理发送到数据库,在插入时考虑并发和索引对插入效率的影响。
测试结果:
有自增主键 有自增无索引 无自增无索引
单表单线程 24113/s 24448/s 24752/s
单表5线程 7611/s 104865/s 104340/s
单表10线程 5756/s 110717/s 105719/s
10表10线程 109878/s 109878/s 113199/s
结论:
1. 在对有索引的表上应减少并发以提高插入效率。
2. 对无索引的表,适当并发能提高插入效率,过高或过低的并发会导致插入效率低下。
3. 自增健对插入影响较小可忽略。
4. 可以考虑将表拆分来提高插入效率。
5. 减少或避免在插入频繁但查询较少的表上建立索引。
其他相关建议:
1. 开启磁盘缓存能提高磁盘处理能力,从而提高插入效率,降低磁盘队列。
2. 修改数据库文件自动增长的增量,避免数据库文件频繁增长。
理论上 SQL Server 自增列存在一个每秒最大生成数,但该数很难使用当前硬件达到