按磁盘顺序读取MSSQL表
问题描述:
How to take advantage of Disk IO queueing
我需要完全做到这一点,但在Microsoft SQL服务器表上。
我有一个+100表的数据库。我需要读每个表的每个记录。
有什么建议吗?值得编写代码做基准和调试几秒钟吗?
如果我能分辨出每张表在磁盘上的位置,那将会非常好。
因为有人会问:是的,这是我程序中的一个瓶颈。按磁盘顺序读取MSSQL表
答
对于SQL Server来说,其他答案是不相关的。 SQL Server以它自己的方式执行IO操作。
一些指点,但:
- 确保每个表都有一个聚集索引
- 你有定期的索引维护
- 确保你有良好的磁盘下方(RAID等)
- 使用企业版读前面的功能如果是关键的
- 确保你有足够的内存
这是什么意思?
- 如果你想在一台工作站磁盘上使用SQL Server Express,则不要打扰。你不能优化这
- 聚簇索引和索引维护确保磁盘上的数据大部分是连续的(受随后的数据更改)
- 代理多久这将需要将在所有表上运行DBCC CHECKDB 。或者ALTER INDEX重建。两者都需要从磁盘读取所有表的所有数据
+1,“那么不要打扰,你不能优化这个”。是的。唯一的答案我不想看到:) – Behrooz 2013-04-22 12:51:31
我的意思是它的100MB,它应该在2秒内读取不是200. – Behrooz 2013-04-22 12:59:19
@Behrooz:100MB应该适合内存,所以你只需要在那里得到它。在一个好的IO子系统上,这应该非常快 – gbn 2013-04-22 14:08:05