Sql server 如何计算Sql Server中的读/写比率?
如何在Sql Server 2005中查询读/写比率?有什么需要注意的吗 也许可以在DMV查询、标准报告、自定义报告(即性能仪表板)或检查Sql分析器跟踪中找到它。我不太清楚 我为什么在乎? 我正在花时间改进我的web应用程序数据层的性能。它处理数百万条记录和数千名用户Sql server 如何计算Sql Server中的读/写比率?,sql-server,sql-server-2005,isolation-level,read-committed-snapshot,optimistic-concurrency,Sql Server,Sql Server 2005,Isolation Level,Read Committed Snapshot,Optimistic Concurrency,如何在Sql Server 2005中查询读/写比率?有什么需要注意的吗 也许可以在DMV查询、标准报告、自定义报告(即性能仪表板)或检查Sql分析器跟踪中找到它。我不太清楚 我为什么在乎? 我正在花时间改进我的web应用程序数据层的性能。它处理数百万条记录和数千名用户 我要检查的一点是数据库并发性。默认情况下,Sql Server使用悲观并发,这对于写操作繁重的应用程序来说是很好的。如果我的应用程序读取量很大,我可能会将其切换到乐观并发(隔离级别:readcommitted snapshot)
我要检查的一点是数据库并发性。默认情况下,Sql Server使用悲观并发,这对于写操作繁重的应用程序来说是很好的。如果我的应用程序读取量很大,我可能会将其切换到乐观并发(隔离级别:
readcommitted snapshot
),就像。我是使用SQL Server Profiler完成的。我只是在运行应用程序之前打开了它,并测试了在应用程序中执行某些操作时执行的查询类型。但我认为仅仅为了确保查询能够工作就更好了,我不知道这样测量服务器工作负载是否方便。探查器还可以保存跟踪到的内容,以便以后进行分析。签出:
- 搜索、扫描、查找都是读取
- 更新是写入
- :每秒接收的Transact-SQL命令批处理数
- :写入数据库并提交的事务数
- :为数据库启动的事务数
alter database <dbname> set allow_snapshot_isolation on;
alter database <dbname> set read_committed_snapshot on;
alter数据库设置允许\u快照\u隔离打开;
将数据库设置为读取已提交快照打开;
这将使读取提交读取(即默认读取)改为使用快照,因此它实际上不需要在应用程序中进行任何更改,并且可以快速测试
您还应该调查您的读取是否在序列化读取隔离级别下执行,这是在使用TransactionScope而不显式指定隔离级别时发生的情况
值得注意的是,版本存储并非完全免费。看见你应该阅读。所有应用程序都是重只读的
- 更新是对WHERE子句的读操作,后跟写操作
- INSERT必须检查唯一索引和FK,这是读取,以及为什么索引FK列
为了优化我们的web应用程序,我们将其设计为减少往返次数(一次调用=一个操作,每次调用多个记录集等)在
sys.dm\u io\u虚拟文件统计数据中找到num\u写入数
和num\u读取数
的比率如何?您的答案很模糊。您是否在跟踪中求和(读取)/求和(写入)以获得比率?这是需要知道的重要信息。如果某个方面很繁重,您可以为此优化SQL Server。读写比率=求和(查找、扫描、查找)/求和(更新)?在谈论SQL负载时,我不知道“读/写比率”的正式定义。许多人使用这个术语,但并没有很好的定义。就个人而言,我更愿意使用(写事务/批处理请求)之类的东西。使用索引统计数据会使比率更偏向于夸大读取,因为单个只读操作(例如一条SELECT语句)通常会导致许多查找/扫描/查找,而写入操作通常会导致很少的更新,通常只有一次。好的,我来看看这些统计数据。这是我从.的作者那里找到的一个很好的读写比率候选值:sys.dm_exec_query_stats:total_logical_reads/total_logical_write
。为什么需要允许快照隔离?在你发布之前,我只是在考虑阅读快照。谢谢你提供的信息。好东西。简洁的。我更新了我的问题来解释为什么我关心这个比率。