Database Design

Rule

Description

Value

Source

Problem Description

1

Excessive sorting and RID lookup operations   should be reduced with covered indexes.

Sys.dm_exec_sql_text

Sys.dm_exec_cached_plans

Large data warehouse can benefit from more   indexes. Indexes can be used to cover queries and avoid sorting. The cost of   index overhead is only paid when data is loaded.

2

Excessive fragmentation:

Average fragmentation_in_percent should be   <25%

>25%

sys.dm_db _index_physical_stats

Reducing index fragmentation through index   rebuilds can benefit big range scans, common in data warehouse and Reporting   scenarios.

3

Scans and ranges are common. Look for missing   indexes

>= 1

Perfmon object

SQL Server Access Methods

Sys.dm_db_missing_index_group_stats

Sys.dm_db_missing_index_groups

Sys.dm_db_missing_index_details

A missing index flushes the cache.

4

Unused Indexes should be avoided

If an index is NEVER used, it will not appear   in the DMV sys.dm_db_index_usage_stats

Index maintenance for unused indexes should be   avoided.

Resource issue: CPU

Rule

Description

Value

Source

Problem Description

1

Signal Waits

> 25%

Sys.dm_os_wait_stats

Time in runnable queue is pure CPU wait.

2

Avoid plan reuse

> 25%

Perfmon object

SQL Server Statistics

Data warehouse has fewer transactions than   OLTP, each with significantly bigger IO. Therefore, having the correct plan   is more important than reusing a plan. Unlike OLTP, data warehouse queries   are not identical.

3

Parallelism: Cxpacket waits

<10%

Sys.dm_os_wait_stats

Parallelism is desirable in data warehouse or reporting   workloads.

Resource issue: Memory

Rule

Description

Value

Source

Problem Description

1

Memory grants pending

>1

Perfmon object

SQL Server Memory Manager

Memory grant not available for query to run.  Check for

Sufficient memory and page life expectancy.

2

Page life expectancy

Drops by 50%

Perfmon object

SQL Server Buffer Manager

Page life expectancy is the average number of   seconds a data page stays in cache.    Low values could indicate a cache flush that is caused by a big read.

Look for possible missing index.

Resource issue: IO

Rule

Description

Value

Source

Problem Description

1

Average Disk sec/read

>20 ms

Perfmon object

Physical Disk

Reads should take 4-8ms without any IO   pressure.

2

Average Disk sec/write

>20 ms

Perfmon object

Physical Disk

Writes (sequential) can be as fast as 1 ms for   transaction log.

3

Big scans

>1

Perfmon object

SQL Server Access Methods

A missing index flushes the cache.

4

If Top 2 values for wait stats are any of the   following:

ASYNCH_IO_COMPLETION

IO_COMPLETION

LOGMGR

WRITELOG

PAGEIOLATCH_x

Top 2

Sys.dm_os_wait_stats

If top 2 wait_stats values include IO, there   is an IO bottleneck

Resource issue: Blocking

Rule

Description

Value

Source

Problem Description

1

Block percentage

>2%

Sys.dm_db_index_operational_stats

Frequency of blocks.

2

Block process report

30 sec

Sp_configure, profiler

Report of statements.

3

Average Row Lock Waits

>100ms

Sys.dm_db_index_operational_stats

Duration of blocks.

4

If Top 2 values for   wait stats are any of the following:

LCK_M_BU

LCK_M_IS

LCK_M_IU

LCK_M_IX

LCK_M_RIn_NL

LCK_M_RIn_S

LCK_M_RIn_U

LCK_M_RIn_X

LCK_M_RS_S

LCK_M_RS_U

LCK_M_RX_S

LCK_M_RX_U

LCK_M_RX_X

LCK_M_S

LCK_M_SCH_M

LCK_M_SCH_S

LCK_M_SIU

LCK_M_SIX

LCK_M_U

LCK_M_UIX

LCK_M_X

Top 2

Sys.dm_os_wait_stats

If top 2 wait_stats   values include IO, there is a blocking bottleneck.

Consider using row   versioning to minimize shared locking blocks.

Exactly the opposite of OLTP applications, reporting or relational data warehouse applications are characterized by small numbers of (different) big transactions. These are frequently SELECT intensive operations. The implications are significant for database design, resource usage, and system performance.

Reporting and data warehouse performance objectives are as follows:

  1. Data warehouse and relational data warehouse designs can have more indexes as the cost of index maintenance is paid only one time, during the batch update process.
  2. Plan reuse should generally be avoided. Plan reuse may result in picking up a plan that was good for some other query (with different data distribution), but may not be good for this query.  The time taken for plan generation of a large DataWarehouse query is not nearly as important as having the right plan.
  3. Sorts can and should be minimized with correct index usage.
  4. Missing index situations should be investigated and corrected.
  5. Large IOs such as range scans benefits from on disk contiguity. Index fragmentation should be frequently monitored and kept to a minimum with index rebuilds.
  6. Blocking is generally uncommon as most data warehouse transactions are read operations.
  7. Parallelism is generally desirable for data warehouse applications.

Common Scenarios to avoid with DataWarehousing的更多相关文章

  1. Common scenarios to avoid in OLTP

    Database Design Rule Description Value Source Problem Description 1 High Frequency queries having a ...

  2. 8 Mistakes to Avoid while Using RxSwift. Part 1

    Part 1: not disposing a subscription Judging by the number of talks, articles and discussions relate ...

  3. Android Lint Checks

    Android Lint Checks Here are the current list of checks that lint performs as of Android Studio 2.3 ...

  4. (WPF) 基本题

    What is WPF? WPF (Windows Presentation foundation) is a graphical subsystem for displaying user inte ...

  5. Processing Images

    https://developer.apple.com/library/content/documentation/GraphicsImaging/Conceptual/CoreImaging/ci_ ...

  6. IMS Global Learning Tools Interoperability™ Implementation Guide

    Final Version 1.1 Date Issued:            13 March 2012 Latest version:         http://www.imsglobal ...

  7. 9.Parameters

    1.Optional and Named Parameters calls these methods can optionally not specify some of the arguments ...

  8. C# Development 13 Things Every C# Developer Should Know

    https://dzone.com/refcardz/csharp C#Development 13 Things Every C# Developer Should Know Written by ...

  9. Introducing Microsoft Sync Framework: Sync Services for File Systems

    https://msdn.microsoft.com/en-us/sync/bb887623 Introduction to Microsoft Sync Framework File Synchro ...

随机推荐

  1. Entity Framwork(EF) 7——在Controller内获取指定字段的值

    一.开发背景: 在用户登录的时候,验证用户和密码是否正确.验证通过后将用户名和用户ID保存下来以便后续数据更新时使用. 二.用户验证方法: 1.创建DBContext 对象. ApplicationD ...

  2. 快速升级php5.6

    !!yum list installed | grep phpcd /etc/yum.repos.drpm -Uvh https://mirror.webtatic.com/yum/el6/lates ...

  3. 转载:mysql ODBC 在64位下提示找不到odbc驱动问题

    在64位机器上,如果你想要连接32位mysql ,一般会安装mysql connector/ODBC 64位,并在配置ODBC数据源测试中连接正常,但在程序连接,如ASP.asp.net.VB.Del ...

  4. 将CSDN和WordPress上的旧文章迁移过来

    我最早用的博客是CSDN,但是不喜欢CSDN的博客,发文章还要审核,界面做的也很模糊,发个文章还必须选个分类.总之不像是用心在做博客这个功能. 后来,我自己搭建了一个网站(www.wangyufeng ...

  5. POJ 1873 - The Fortified Forest 凸包 + 搜索 模板

    通过这道题发现了原来写凸包的一些不注意之处和一些错误..有些错误很要命.. 这题 N = 15 1 << 15 = 32768 直接枚举完全可行 卡在异常情况判断上很久,只有 顶点数 &g ...

  6. libcurl多线程超时设置不安全(转)

    from http://www.cnblogs.com/kex1n/p/4135263.html (1), 超时(timeout) libcurl 是 一个很不错的库,支持http,ftp等很多的协议 ...

  7. C# webApi 与 AngularJs 实现增删改Demo 讲解(一)

    公司在使用webAPI+AngularJs+SlcikGrid进行产品开发,自己也是初学Angular,就做了一个Demo,实现增删改功能,希望可以帮助大家. 界面如同所示:  数据库一张单表很简单, ...

  8. bootstrap的日期插件datetimepicker有问题

    bootstrap的日期插件datetimepicker在chrome中会出现掉下来的现象,而且一直没找到原因,下载最新版的插件直接在各个浏览器中都会掉下来, 问题一直解决不了,转而换其他插件 htt ...

  9. RGBA 与opacity

    RGBA是一种表示颜色的方式,初次看到觉得很奇怪,与RGB的区别是什么?后面查了下,才发现RGBA的好处. RGBA各个字母的含义为: R:红色值,正整数 | 百分数: G:绿色值,正整数 | 百分数 ...

  10. ABAP 根据操作员分组发送邮件

    1,获取操作员姓名 SELECT SINGLE ADRP~NAME_TEXT INTO GS_OUTPUT-UNAMT FROM ADRP INNER JOIN USR21 ON ADRP~PERSN ...