Ata*_*api 4 performance sql-server olap
我有一个带有数据库的 SQL Express 服务器,该服务器由一个应用程序使用。我正在尝试优化数据库,但不确定数据库是 OLTP 还是 OLAP。
没有安装分析服务器,数据库在 SQL Server 实例内部,因此它应该是 OLTP,但是当我在数据库上运行读/写比率时,我有以下内容:
Reads Writes Read% Write %
DB file 400 000 75 000 85% 15%
DB log 250 30 000 1% 99%
Run Code Online (Sandbox Code Playgroud)
标准的 OLTP DB 应该有更多的读取而不是写入,对吧?这让我怀疑它可能是 OLAP DB。
我问这个关于超线程技术的使用、MAXDOP 设置以及是否将缓存配置为直写或回写等。
我使用的查询如下:
SELECT DB_NAME(DB_ID()) AS [Database Name] ,
[file_id] , num_of_reads , num_of_writes , num_of_bytes_read , num_of_bytes_written ,
CAST(100. * num_of_reads / ( num_of_reads + num_of_writes ) AS DECIMAL(10, 1)) AS [# Reads Pct] ,
CAST(100. * num_of_writes / ( num_of_reads + num_of_writes ) AS DECIMAL(10,1)) AS [# Write Pct] ,
CAST(100. * num_of_bytes_read / ( num_of_bytes_read + num_of_bytes_written ) AS DECIMAL(10, 1)) AS [Read Bytes Pct] ,
CAST(100. * num_of_bytes_written / ( num_of_bytes_read + num_of_bytes_written ) AS DECIMAL(10,1)) AS [Written Bytes Pct]
FROM sys.dm_io_virtual_file_stats(DB_ID(), NULL) ;
Run Code Online (Sandbox Code Playgroud)
高级 DBA 有什么想法吗?
Tho*_*ser 17
从 DBA 的角度来看,OLAP 和 OLTP 之间的主要区别在于您应用于查询的调整方法。读/写比率并没有真正告诉您任何有用的信息。
我有一个小“魔力象限”,我用它来说明差异(在您的情况下,将 BI/DW 和 ETL 视为与 OLAP 相同):

基本上,如果您必须接触大量数据才能产生查询结果,那么您就是 OLAP。相反,如果您可以通过接触很少的数据来产生返回值,那么您就是 OLTP。
显然,如果您的索引策略很差,那么 OLTP 最终会看起来像 OLAP - 仅仅因为您最终总是进行表扫描。区分这种区别的一个好方法是查看系统中前 10 个最重要的查询必须涉及多少数据 - 无论您的索引策略有多好。
一旦确定了大部分工作负载是什么,您就可以开始应用特定于工作负载的调优技术。以下是您可能会考虑的一些特定于工作负载的技巧(始终根据您的特定工作负载量身定制)
OLAP:
OLTP:
小智 -5
由于数据库是在普通 SQL Server 实例中创建的,因此它是一个 OLTP 数据库,因为 OLAP 数据库仅在 Analysis Server 实例中创建。此外,您无法从 OLAP 数据库中插入、更新或删除,因此作为软件开发人员,您无法选择使用 OLAP 作为解决方案的核心数据库。不仅如此,你不能用普通的SELECT语句查询OLAP数据库,你应该使用MDX语句。
OLTP 代表在线事务处理,这意味着它依赖于事务。然而,另一方面,OLAP 依赖于所谓的处理。OLAP数据库依赖于具有特定模式的普通数据库,在加载数据后(可能使用SSIS),进行处理以将数据加载到OLAP数据库中。
| 归档时间: |
|
| 查看次数: |
6318 次 |
| 最近记录: |