SlideShare a Scribd company logo
1 of 167
SQL Server效能調校
從四個觀點開始
大綱
 從硬體角度出發
 從SQL Server本質出發
 從語法出發
 從設計出發
硬體比較可靠?
基本計算機的結構
NUMA
NUMA
SMB NUMA
硬碟的真實面貌
IOPS(Input/Output Per
Second)
 用來統計所有儲存設備的一種速度評估
數值,如同讀取速度與寫入速度等其他
速度測試標準,IOPS數值也是廣被儲
存設備廠商使用來評估設備的真實效能
數字的參考依據。
◦ IOPS=1/(磁碟轉速+尋軌速度+資料傳輸速
率)
IOPS測試工具
 SQLIO :微軟官方工具
 IOMeter :測SAN,業界公認標準工具
 SQLIOSim : 模擬SQL Server的I/O模
式
 WmaRow :以網頁型式呈現
固態硬碟(SSD,Solid State
Drive)
 SSD是在標準NAND快閃記憶體基礎上
所建構的新一代低功率且耐用的儲存系
統,雖然相較於HDD,目前的SSD在
價格上較不具優勢。
 有寫懲罰現象。
 二氧化硅化學變化。
 有壽命的問題。
SSD與傳統硬碟差異
傳統硬碟 固態硬碟
RamDisk
 利用軟體的方式,將動態記憶體模擬成
硬碟裝置的一種技術。
 斷電時會清空資料。
 讀寫速度極快,壽命長。
 速度會受到以下項目影響:
◦ 軟體
◦ 記憶體時脈
◦ 晶片組的記憶體通道數
硬體式-RamDisk
 ANS-9010是由
八條記憶體模組
組成的記憶體硬
碟,速度遠比傳統
機械式硬碟或
Flash傳輸的固態
硬碟都快,適合大
量資料讀取。
Ramdisk軟體
軟體名稱 目前版本 價格 備份資料 其它
Buffalo V.3.2.5.0 Free 有 支援IE Cache,但相容性
差
Dataram Disk V4.0.1.RC9 Free/18.99
美元
有 免費版僅支援到4GB上
限
ImDisk Virtual
Disk
V1.6.0 Free 有
(掛載)
利用映像檔的方式建立,
設定較複雜
Primo
Ramdisk
V5.6.0 29.95 ~
69.95美元
有 VSuite RamDisk進化版,
功能很多
Qsoft RAM
Disk
5.3.2.13 10~
35 美元
有 容量無上限,但需要利用
手動方式安裝Driver
SoftPerfect
RAM Disk
3.3.3 Free 無 可預設建立資料夾
SuperSpeed
RamDisk
V11.7.975 Free 無 免費版僅支援4G上限
VSuite
RamDisk
V4.6.7531.124
0
Free/69.95
119美元
有 免費版僅支援32bit作業
系統
RamDisk效能評估
RAID(Redundant Array of
Independent Disks)
 其基本思想就是把多個相對便宜的硬碟
組合起來,成為一個硬碟陣列組,使效
能達到甚至超過一個價格昂貴、容量巨
大的硬碟。根據選擇的版本不同,
RAID比單顆硬碟有以下一個或多個方
面的好處:增強資料整合度,增強容錯
功能,增加處理量或容量。另外,磁碟
陣列對於電腦來說, 看起來就像一個
單獨的硬碟或邏輯存儲單元。
常用RAID
特殊RAID
RIAD比較表
RAID 比較表
Workload Requirement RAID 10 RAID 50 RAID 5
Capacity 中等 好 非常好
Availability 非常好 好 中等
Sequential Reads 非常好 非常好 非常好
Sequential Writes 好 好 好
Random Reads 非常好 非常好 非常好
Random Writes 非常好 好 中等
Performance impact of
drive failure or RAID
reconstruction
低 高 沉重
RAID選擇的考量
 隨機 讀/寫 能力
 循序 讀/寫 能力
 平行 讀/寫 能力
 平均資料量
 容錯能力
資料庫結構部署
Primary群組
(MDF檔)
自訂資料群組
(NDF檔)
(NDF檔)
…
大型物件群組
(NDF檔)
(NDF檔)
…
索引群組
(NDF檔)
(NDF檔)
…
LDF檔
硬碟的選擇
 考慮以下幾個問題:
◦ 系統存取資料庫方面的特性(循序、隨機)
◦ 系統資料成長的速率
◦ 一台伺服器有多少個Instance
◦ 一個Instance有多少個資料庫
高可用性(HA,High Availability)
備援機制
HA硬體架構設計
Heartbeat
SQL Server提供的HA
容錯移轉叢集
 業界行之有年且較偏好使用的高可用性方案。
 架設成本昂貴。
 架設叢集需注意項目:
◦ 支援叢集的作業系統版本
◦ 支援叢集的SQL Server版本
◦ 伺服器的硬體需符合硬體相容清單(Hardware
Compatibility List)
◦ 伺服器的規格等級需相同
◦ 不斷電系統的電源供應
◦ 備援電源供應器
◦ ECC記憶體
◦ RAID磁碟系統
◦ 容錯的網路介面卡(Network Interface Card)
容錯移轉叢集-架構圖
共用磁碟
節點B
節點A
私有網
路區段
Heartbeat
偵測裝置
仲裁磁碟
虛擬資源群組
用戶端
用戶端
用戶端
公有網
路區段
容錯叢集的種類
類型 描述
Single-Instance Active/Passive模式,整個叢集架構中只有一個虛擬伺服器
執行個體(用戶端只看到一台伺服器),並且只允許一個節點
擁有整個叢集系統,另一節點則處於待命的狀態。此種架
構由於一次只有一個節點處於運作的狀態,因此只需購買
一個SQL Server的授權。
Multiple-
Instance
Active/Active模式,整個叢集架構允許同時有兩個以上的虛
擬伺服器執行個體(用戶端可以看到多台伺服器),每一個叢
集的執行個體皆有專屬的資料及交易紀錄檔儲存位置,當
主要節點失敗時,另一節點則會啟動並接續所有的服務,包
含原節點的儲存系統。此種架構SQL Server的授權需視節
點數而定。
N+1 由Multiple-Instance架構衍生出來的。整個叢集架構允許
同時有兩個以上的虛擬伺服器執行個體(用戶端可看到多
台伺服器),但另外加一個Passive節點,當叢集架構內的任
一節點發生錯誤時,備用的Passive節點會接續該節點的所
有資源及服務
N+M 同N+1架構,只不過有M個Passive節點。
鏡像
 能夠以較低的建置成本、較容易的方式
建置資料的高可用性架構。
 AP端需採用SQL Native Client Library
或ADO.Net 2.0才能在發生錯誤後自動
導向備援機。
 主體(Principle)伺服器負責所有處理作
業,鏡像(Mirror)伺服器則擔負與主體伺
服器同步資料的工作,鏡像資料庫不允
許使用者連接。
鏡像的特色
 使用加密的TCP端點(Port)傳送交易紀
錄。
 僅有認可並成功的交易紀錄才會傳送。
 只能一台主體對應一台鏡像,不支援多
台。
 支援手動或自動的容錯移轉。
 作業模式:
模式 自動容錯移轉 資料遺失風險 效能 同步模式 見證伺服器
高可用 會 無 慢 同步 需要
高保護 需手動 無 慢 同步 否
高效能 需手動 有 快 非同步 否
鏡像-同步
6
4
3
52
1 7
主體伺服器
(Principle)
鏡像伺服器
(Mirror)
送出命令
進行交易並
寫入資料庫
認可交易
傳送至鏡像伺服器
回覆命令交易成功
回覆作業成功
進行交易並寫入資料庫
DB Log Log DB
鏡像-非同步
4
3
52
1 4
主體伺服器
(Principle)
鏡像伺服器
(Mirror)
送出命令
進行交易並
寫入資料庫 認可交易
回覆命令交易成功
傳送交易至鏡像伺服器
DB Log Log DB
進行交易並寫入資料庫
交易紀錄傳送
 透過SQL Server Agent作定時交易紀錄
檔備份、複製及還原來達到多台伺服器
上的資料庫資料同步。
 當原伺服器發生問題時,再利用其它執
行個體替換,藉此達到資料的高可用性。
交易紀錄架構
Witness
Primary
Seconda
ry
Seconda
ry
Seconda
ry
Seconda
ry
SQL Server 2012(AlwaysOn)
Windows Server Failover Clustering(WSFC)
• 提供三種容錯移轉模式
• 移轉是以可用性群組為單位
• 提供Active/Active
• 提供虛擬網路名稱(VNN)-Active/Active需手動修改
ConnString
• 具自動頁面修復
• 支援加密和壓縮
• 不需要Storage
SQL Server AlwaysOn技術
 容錯移轉叢集(SQL FCI)
◦ 支援多重子網路(長距離異地備援)
◦ SMB
 可用性群組(AG)
◦ 同步單位 – DB
◦ 支援最多到四個複本
◦ 容錯: 同步,半手動,手動
◦ Page修復,資料傳輸加密與壓縮
 可用性群組接聽程式
◦ 提供AP虛擬網路名稱
FCI vs AG
容錯移轉叢集執行個
體(SQL FCI)
可用性群組(AG)
單機 主要、次要
無延遲 延遲
執行個體 使用者資料庫
共用儲存設備 無
無次要 讀取次要
AlwaysOn的容錯移轉模式
SQL Server 2012 AlwaysOn 容錯轉移
同步 同步-手動轉移 非同步
自動 是 否 否
計劃性手動 是 是 否
強制手動 是 是 是
交易記錄同步
DB2DB1
SQL Server SQL Server
DB2DB1
報表報表
從SQL Server本質出發
 從硬體角度出發
 從SQL Server本質出發
 從語法出發
 從設計出發
探索本質
SQL Server架構
執行個體
 預設執行個體
該台伺服器未安裝正式版SQL Server,第一次安裝且
不指定名稱。
 具名執行個體
在已安裝預設執行個體的伺服器上,接下來安裝的
SQL Server都需要給予名稱。
SQL Browser
 一台伺服器上安裝多個SQL Server,且
使用不同的連線通訊埠號
 啟用SQL Browser服務後,會打開UDP
Port:1433,而應用程式以UDP協定連至
SQL Browser;而SQL Browser回傳其所
要求的執行個體的相關連線資訊。
 有安全性疑慮
系統資料庫
系統資
料庫
備份需求 復原模型 描述
master 需要 簡單 SQL Server的核心資料庫,若有操作任何資
料庫的異動、新增或刪除,調整任何伺服器
物件或設定值,則需備份。
model 需要 視需求 SQL Server建立任何新資料庫或物件時的
基礎模型,若有做任何自訂的改變或設定,則
需備份。
msdb 需要 簡單(預設) SQL Server所有的自動化作業、警示、操
作員等相關資訊皆紀錄其中,若不想在SQL
Server毀損後,自行手動重建所有的作業、
警示、操作員等相關資訊,則需備份。
tempdb 不需要 簡單 保存暫存物件或中繼結果集的工作空間,由
於當SQL Server重新啟動時,會重新建立
tempdb資料庫,因此不需要備份
SQL Server的檔案
 SQL Server的資料庫一共有以下三個
檔案:
◦ MDF
◦ NDF
◦ LDF
 SQL Server的檔案架構:
執行個體->資料庫->檔案群組->資料檔
案->資料表->資料欄位/資料列
SQL Server檔案存取特性
 隨機存取
◦ MDF
◦ NDF
 循序存取
◦ LDF
SQL Server檔案對效能的影響
 狀況一:
MDF/NDF與LDF放在同一個硬碟內
 狀況二:
所有資料表都建在MDF
 狀況三:
LDF過大
資料異動的過程
1
2
3
4
藉由應用程式異動資料
將資料讀出並寫入
緩衝區快取,然後修改
將異動資料寫入
交易紀錄檔磁碟
當CheckPoint發生
將已完成的交易寫入
資料庫
SQL Server的資料結構
 SQL Server採用B-Tree的方式存放資
料
資料型別
整數類
bigint numeric
Bit dmallint
Decimal dmallmoney
int tinyint
money
近似值
Float real
日期與時間
date datetimeoffset
datetime2 smalldatetime
datetime time
資料型別(續)
字元&字串
char varchar
text
字元&字串(Unicode)
nchar nvarchar
ntext
二進位
binary varbinary
image
其它
cursor timestamp
hierarchyId uniqueIdentifier
Sql_variant xml
table
資料型別調整案例
資料型別 資料型別(改) 差異 欄位數 節省Byte數
INT TINYINT 3 Bytes 2 6 Bytes
INT SMALLINT 2 Bytes 4 8 Bytes
DATETIME SMALLDATETIM
E
4 Bytes 3 12 Bytes
NCHAR(10) CHAR(10) 10 Bytes 1 10 Bytes
VARCHAR(x) CHAR(X) 2 Bytes 7 14 Bytes
每筆紀錄共節省: 50Bytes
資料型別對效能的影響
 狀況一:
都使用不固定長度的資料型別
 狀況二:
一張表擁有太多欄位
 狀況三:
使用過大的資料型態
定序(Collection)
 SQL Server針對文字資料的排序與搜尋的
依據。
 層次:
◦ 伺服器:安裝時已經確立。
◦ 資料庫:建立資料庫時可自行指定,若不指定則
採用伺服器的定序;建立後可再修改,但無法朔
及既往的物件。
◦ 資料欄位:針對文字型欄位進行指定,日後可修
改,但該欄位若有索引或外部參照,則無法修改
◦ 運算式:可在運算式中指定文字型欄位的定序。
定序對效能的影響
 狀況一:
兩個不同定序的資料表作Join
 狀況二:
使用錯誤的定序
 狀況三:
多國語系
資料庫還原模型
復原模式 描述
Simple 不需要備份交易紀錄檔,每次備份後,交易紀錄會截斷。將
會重複使用交易紀錄檔空間,以維持交易紀錄的最小空間。
Full 需要備份交易紀錄檔,不會有任何資料的損失,可還原至任
何時間點。
Bulk Logged 需要備份交易紀錄檔。與Full模式幾乎相同,只差在操作大
量資料時,會以最小量的交易紀錄來紀錄過程,以減少交易
紀錄檔的成長及加快操作大量資料的速度。
還原模型對效能的影響
 狀況一:
使用錯誤的還原模型
 狀況二:
清除/更新大量資料
條件約束
 維持資料完整性
 群組:
◦ 值域完整性:Default, Check, Foreign Key,
Null
◦ 實體完整性:Primary Key, Unique
◦ 參考完整性:Foreign Key, Check
條件約束對效能的影響
 狀況一:
大量資料更新
索引
 SQL Server有以下幾種索引:
◦ 叢集索引
◦ 非叢集索引
◦ 過濾型索引
◦ 包覆型索引
◦ Sparse索引
◦ XML索引
◦ 空間索引
◦ 欄位索引(僅SQL Server 2012有)
叢集索引
非叢集索引
索引對磁碟的I/O差異
資料表掃描
 1 Data Row = 200 Bytes(10 Bytes * 20 Columns)
 1 Data Page = 40 Data Rows (8K / 200 Bytes)
 Disk Space for Data Pages
= 25,000 Data Pages (1,000,000 rows / 40
rows/Page)
= 200 MB (8k & 25,000)
磁碟I/O極大,
易造成查詢逾
時
索引對磁碟的I/O差異
非叢集索引掃描
1 Index Row = 20 Bytes (10 Bytes * 2 Columns)
1 Index Page = 400 Index Rows (8k / 20 Bytes)
Disk Space for Index Pages
= 2,500 Index Pages (1,000,000 rows / 400
rows/page)
= 20 MB (8k * 2,500)
雖然 磁碟I/O只有
資料表掃描的10%,
但仍有可能逾時
索引對磁碟的I/O差異
叢集索引搜尋
1 Index Row = 200 Bytes (10 Bytes * 20 Columns)
1 Data Page = 40 Data Rows (8k / 200 Bytes)
Disk Space for Data Pages
= 25 Data Pages (1,000 rows / 40 rows/page)
= 200KB (8k * 25)
磁碟I/O只有
資料表掃描的
0.1%,
非叢集索引的1%
索引對磁碟的I/O差異
非叢集索引搜尋
1 Index Row = 20 Bytes (10 Bytes * 2 Columns)
1 Index Page = 400 Index Rows (8k / 20 Bytes)
Disk Space for Data Pages
= 3 Index Pages (1,000 rows / 400 rows/page)
= 24 KB (8k * 3)
磁碟I/O只有
叢集索引搜尋的
12%
過濾型索引
 過濾型索引
◦ 提供過濾條件,藉此條件過濾那些資料要放
進索引結構中。
過濾型索引
建立過濾索引
使用到索引
需更動索引
不需更動索引
ProductID ProductName CategoryID
1 Chai 1
2 Aniseed Syrup 1
3 Tofu 2
4 Pavlova 3
索引設計建議
 叢集索引
◦ 資料重複性不高,且資料列依其索引鍵值排
序
◦ 適用於範圍查詢及Group By/ Order By
◦ 避免建立於資料長度大的欄位,將大量增加
資料表大小並增加維護成本
 非叢集索引
◦ 資料重複性高,經常用於查詢中Join條件欄
位
◦ 使用
索引的效能問題
 狀況一:
選擇不適當的欄位作為索引
 狀況二:
建立一堆不會用到的索引
 狀況三:
索引結構太久沒重組/重建
 狀況四:
一個索引包含太多欄位
記憶體-內部 & 外部破碎
 內部破碎
SQL Server採用固定大小分頁,但資料有可能無法剛
好填滿8KB,而剩下的空間就是內部破碎。
 外部破碎
當資料異動經過一段時間後,記憶體空間會出現大小
不一的閒置空間,而這些空間卻不足8KB,這些閒置空間
就是外部破碎。
空間破碎對效能的影響
 狀況一:
破碎比率高達50%
 狀況二:
資料欄位設計不佳
填滿因子
 建立或重建索引時,填滿因子數值會決
定要在每個葉層級分頁上填滿資料的空
間百分比,進而保留某個百分比的可用
空間以備未來成長使用。
設定完填滿因子後
當填滿因子設定為0時,
會盡量把每一頁塞滿
設定完填滿因子後,每一頁出現
間差的閒置空間可供插入新的
資料列,藉此避免劇烈的Page異動
填滿因子對效能的影響
 狀況一:
填滿因子設定值於系統現況不符
綱要結構
 資料庫Schema用來管理驗證與授權
HR
dbo
Select * From HR.HumanResource
Select * From HumanResource
HR
dbo
HR
dbo
Select * From dbo.HumanResource
綱要結構對效能的影響
 狀況一:
使用物件時,僅用單節式名稱
 狀況二:
建構物件時,不指定其綱要結構
統計資訊
 查詢最佳化工具會使用統計資訊來建立
可改善查詢效能的查詢計劃。
 自SQL Server 2005之後就不再使用系
統資料表 sysindexes 的 rowmodctr 作
為統計資訊的依據。
 SQL Server 2005/2008/2008 R2改以
使用sys.sysrowsetcolumns 的
rcmodified 。
設定統計資訊更新機制
統計資訊對效能的影響
 狀況一:
長期不更新統計資訊
 狀況二:
使用非SARG語法
唯讀檔案群組
 檔案群組可標示成唯讀。除了主要檔案
群組的任何現有檔案群組都可標成唯讀。
標成唯讀的檔案群組將無法以任何方式
修改。
 唯讀資料表可加上Column Index。(僅
SQL Server 2012支援)
唯讀檔案群組對效能的影響
 狀況一:
可異動資料表與非異動資料放在同一
個檔案群組
 狀況二:
唯讀檔案群組與非唯讀檔案群組放置
在同一個硬碟
壓縮
 SQL Server支援兩種資料壓縮模式:
◦ 列壓縮
◦ 表壓縮
壓縮對效能的影響
 狀況一:
CPU資源不足的狀況下啟用表壓縮
 狀況二:
OLTP使用表壓縮,OLAP使用列壓縮
Data Block
 SQL Server的最小單位為Page – 8KB,
而一個延伸區塊為8個Page即為 –
64kB。
 Windows作業系統預設最小Data Block
為8KB。
Data Block對效能的影響
 狀況一:
設定不符合系統向況的Data Block大小
 狀況二:
多系統放置於同一硬碟或RAID中
預存程序
 預存程序可包含一系列的T-SQL敘述所
組成,可在預存程序中運用自訂變數、
各種DDL 、 DML 、 DCL 、 交易及流
程控制語言。
 可將其定義的工作內容預先編譯好並儲
存於資料庫中。
 通常用來封裝需要重複執行週期性的工
作。
• 若沒有要回傳值,記得要設定: NoCount on
• 盡量使用兩節式命名
• 名稱勿用sp開頭
預存程序 – 撰寫要點
預存程序-重編譯
 每次呼叫都重編譯:
◦ Create Procedure … With Recompile
◦ Alter Procedure … With Recompile
 僅於該次呼叫時重編譯:
◦ Exec [預存程序名稱] With Recompile
 透過SP_Recompile指定重編譯:
◦ Sp_Recompile [預存程序名稱]
預存程序對效能的影響
 狀況一:
太久沒重編譯
 狀況二:
動態組SQL語句時,採用Exec
 狀況三:
發生參數探測現象
自訂函數
 類似預存程序,函數的內容可包含一系
列的T-SQL敘述,也可以函數內部語法
中使用自訂變數來輔助,以方便取得欲
得到的結果。
 函數僅能撰寫DML敘述。
 函數可在T-SQL的各種敘述中的任何位
置,使用上較為彈性。
自動函數的種類-純量/資料表值
自訂函數 – 決定/非決定性
函數對效能的影響
 狀況一:
在Where條件中使用函數
 狀況二:
查詢/處理大量資料時,使用函數
觸發
 發生在特殊時間點而運作的預存程序,
因此觸發程序可以處理各種DDL語法發
生後,及DML敘述執行前或後。
 依照發生的時間區分為:
觸發程序種類 特色
After 發生Insert/Update/Delete之後,只能運用在資料表
Instead Of 發生在Insert/Update/Delete之前,可運用在資料表及檢視
觸發對效能的影響
 狀況一:
在同一張表上,設計太多的觸發程序
 狀況二:
設計成巢狀觸發
檢視(View)
 是一種觀看檢視資料的一個虛擬物件,
因為它本身不儲存資料,而只儲存查詢
資料的Select語法。
 有以下三種類型的檢視:
◦ 標準檢視
◦ 索引檢視
◦ 分割檢視
動態檢視/動態管理函數
 SQL Server 2005以後,不再讓使用者直
接存取系統料表,而是系統檢視。
 動態檢視配合動態管理函數查詢伺服器
當下的執行狀況,監控其健康與否,累積
與統計執行資訊,診斷問題。
 使用動態檢視/動態管理函數時,需以兩
段式名稱。
動態管理檢視/動態管理函數
檢視/函數 描述
dm_exec_* 使用者程式碼與相關連線的執行統計
dm_os_* 作業系統效能資訊
dm_tran_* 交易和隔離
dm_io_* 網路和磁碟的I/O
dm_db_* 資料庫和資料庫物件
檢視/函數 描述
dm_repl_* 複寫
dm_broker_* SQL Server Broker
dm_fts_* Full Text Search
dm_qn_* Query Notifications
dm_clr_* CLR execution of managed code
伺服器層級
元件層級
交易
 保持操作四個項目
◦ 不可分割性(Atomicity)
◦ 一致性(Consistency)
◦ 隔離性(Isolation)
◦ 持續性(Durability)
 SQL Server具有的交易隔離等級
◦ 讀取未認可(Read UnCommitted)
◦ 讀取認可(Read Committed)
◦ 可重複讀取(Repeatable Read)
◦ 可序列化(Serializable)
◦ Read Committed using Statement-level
Snapshot
◦ (快照) Snapshot
Read_Committed_Snapshot
為On時自動啟用
Allow_Snapshot_Isolation
為On時自動啟用
交易隔離等級的副作用
隔離等級 中途讀取(Dirty Read) 非可重覆讀取 幽靈(Phantom)
讀取未認可
讀取認可
可重複讀取
快照
可序列化
鎖定
 目的:
用以同步處理多個使用者在同一時間存取的相同資
料。
 當交易修改資料時,它會持有防止其它
交易修改的鎖定,直到自己的交易結束。
 交易會持有讀取保護的鎖定,其持有的
時間長短視交易隔離等級而定。
鎖定模式
鎖定模式 描述
共用(S) 用於不變更或更新資料的讀取作業,例如: Select陳述式。
更新(U) 用於可更新的資源上,防止當多個工作階段正在讀取、鎖定及後
來可能更新資源時發生的死結現象。
獨佔(X) 用於資料修改動作,例如: Insert, Update 或 Delete。確保不能
對相同資源同時進行同時更新。
意圖 用來建立鎖定階層。意圖鎖定的類型為: 意圖共用(IS)、意圖獨
佔(IX)與共用意圖獨佔(SIX)。
結構描述 執行相依於資料表結構描述的作業時使用。結構描述鎖定的類
型為: 結構描述修改(Sch-M)與結構描述穩定性(Sch-S)
大量更新
(BU)
用於大量複製資料到資料表,且已指定TabLock提示字時。
索引鍵範圍 當使用Serializable這種交易隔離等級時,保護查詢讀取的資料
列範圍。確定其它交易無法插入資料列,這些資料列在查詢重新
執行時,可限定Serializable交易的查詢。
死結
 當兩個交易各自鎖定特定資料,並且彼
此欲再鎖定對方已經鎖定的資料時。
 觀察鎖定狀態:
◦ 活動監視器:透過查詢每個與SQL Server的
連線狀況,可得知是否有使用者被其它交易
封鎖或封鎖到其它使用者交易
◦ 動態管理檢視:可透過
sys.dm_exec_requests,
sys.dm_tran_locks來查詢交易封鎖
◦ SQL Profiler:可透過Lock分類中的事件項
目,Deadlock, Deadlock Chain觀察
鎖定對效能的影響
 狀況一:
熱點物件被鎖定
 狀況二:
使用不合適的交易隔離等級
 狀況三:
錯誤的資源配置
檢測效能的工具
 系統Performance Counter
 活動監視器
 效能報表
 SQL Profiler
 資料收集器
 擴充事件
系統Performance Counter
重要的效能物件與計數器
資源 效能物件 計數器 瓶頸條件 建議
記憶體 Memory Pages/Sec <20 增加記憶體
記憶體 Memory Available
Mbytes
<200MB 增加記憶體
處理器 Processor % Processor
Time
<75% 1. 升級處理器速度或
增加處理器個數
2. 改善耗處理器的瓶
頸
處理器 System Processor
Queue Length
<2 同上
硬碟 PhysicalDis
k
Avg. Disk
Read Queue
Length
<2 1. 換更快速的磁碟機
2. 資料庫檔案的檔案
群組重新規劃分散
於不同磁碟陣列
硬碟 PhysicalDis
k
Avg. Disk
Write
Queue Length
<2 同上
重要效能物件與計數器
資源 效能物件 計數器 瓶頸條件 建議
記憶體 Buffer
Manager
Buffer Cache
Hit Ratio
<90 增加記憶體大小
記憶體 Memory
Manager
Target Server
Memory
>實體記
憶體
90%
增加記憶體大小
記憶體 Memory
Manager
Total Server
Memory
>實體記
憶體
90%
增加記憶體大小
Tempd
b
Databases Data File Size 是否持續
增加
Tempd
b
Access
Manager
Worktables
Created/Sec
是否持續
增加
交易紀
錄檔
Databases Log File Size 10~25%
Data File
Size
備份或清除交易紀錄
檔,然後壓縮檔案
活動監視器
效能報表
效能報表-Dashboard
 下載
SQL Profiler
 監控SQL Server最簡單的方式。
 SQL Profiler範本
範本名稱 範本用途
SP_Counts 擷取經過一段時間的預存程序執行行為
Standard 建立追蹤的一般性起點,擷取已執行的所有預存程序和T-
SQL批次。用來監視一般性的資料庫伺服器活動。
TSQL 擷取用戶端提交給SQL Server的所有T-SQL陳述式,以及
發出的時間。用來對用戶端應用程式進行偵錯。
TSQL_Duration 擷取用戶端送交給SQL Server的所有T-SQL陳述式,其執
行時間(毫秒為單位),並依持續時間分組。用以找出過慢的
查詢。
SQL Profiler範本
範本名稱 範本用途
TSQL_Grouped 擷取已送交給SQL Server的所有T-SQL陳述式,及其發出的
時間。按照提交陳述式的使用者或用戶端將資訊分組。用
來調查特定用戶端或使用者的查詢。
TSQL_Locks 擷取用戶端提交給SQL Server的所有T-SQL陳述式,連同例
外鎖定事件。使用此項目可針對死結、鎖定逾時和鎖定擴
大事件進行疑難排解。
TSQL_Reply 專門用以結取T-SQL陳述式的詳細資訊,重新執行追蹤時需
要此資訊。用來執行反覆微調,例如:基準測試。
TSQL_SPs 擷取所有執行中預存程序的詳細資訊。用來分析預存程序
的元件步驟。如果懷疑程序重新編譯過,則可增加追蹤
SP:Recompile事件。
Tuning 擷取預存程序和T-SQL批次執行的相關資訊。用來產生追蹤
輸出,供Database Engine Tuning Advisor用以當作工作負在
來微調資料庫。
SQL Profiler
SQL Profiler+效能計數器
資料收集器(Data Collector)
 讓管理人員持續監控與收集相關效能計數器、
Profile數據及指定的T-SQL輸出結果。
 資料收集器的運作是基於:
◦ SQL Server Agent
◦ SSIS
 收集模式:
◦ 快取
◦ 非快取
 資料收集項目:
◦ 磁碟使用量(預設收集模式: 非快取)
◦ 查詢統計資料(預設收集模式:快取)
◦ 伺服器活動(預設收集模式:快取)
資料收集器-系統架構
資料收集器 – 磁碟用量
擴充事件
從程式出發
 從硬體角度出發
 從SQL Server本質出發
 從語法出發
 從設計出發
精準的分析
執行成本
 何謂執行成本
◦ 成本計算是由查詢最佳化工具(Query
Optimizer)自動做計算的
◦ 查詢最佳化工具根據兩個主要因素來判斷執行
查詢計劃的成本
 在查詢計劃的每一個層級進行處理的資料列總數,此
稱為計劃的”基數”(Cardinality)
 查詢中使用的運算子所指定的演算法成本模型
(如:Index Seek, Index Scan, Nested Loop..)
 第一個因素(基數)會作為第二個因素(成本模型)的輸
入參數。改善基數(減少符合條件筆數),就能產生更好
的估計成本,進而可有更好的執行紀劃。
執行成本概念
 SQL Server從建立索引或統計資訊時,
由索引第一個欄位或指定欄位資料中,
進行取樣所產生的資料分佈長條圖
(Histogram)來估計基數,再加上條件約
束資訊及查詢的邏輯來合併判斷基數。
在執行計劃中有不同的成本項目(執越低越好)
估計的I/O成本 該作業之所有I/O活動的估計成本。
估計的CPU成本 該作業之所有CPU活動的估計成本。
估計的運算子成本 執行此作業的查詢成本。此作業的成本會當作查
詢總成本的百分比顯示在括號內。
估計的子樹成本 執行此作業與同一子數此作業前面之所有作業的
總成本。
執行計劃建立
 SQL執行語句的前置作業
◦ 語法解析->語意解析->編譯->產生執行計劃
 執行計劃建立時機
◦ 第一次執行T-SQL
◦ 執行相同T-SQL但傳遞不同參數
◦ 應用程式發出預先編譯指令(Prepared)
◦ 舊有執行計劃被清除後
執行計劃的重用/重編譯
 執行計劃重用時機
◦ 執行完全相同的T-SQL,並傳遞相同參數值
◦ 使用Store Procedure且Stored Procedure在執
行階段沒有重新編譯
◦ 使用參數化查詢(使用sp_executeSql指令)
 執行計劃重新編譯
◦ 在T-SQL或Stored Procedure中明確指定
Option(Recompile)的查詢提示或指定With
Recompile
◦ 執行Stored Procedure前執行sp_recompile
◦ 當資料表結構變更或是檢視(View)增刪欄位
◦ 當資料表或檢視(View)統計資訊更新後
查詢執行計劃
 文字執行計劃格式
◦ 適合輸出語法較複雜的執行計劃
◦ 查看各項統計數值,如估計列數
(EstimateRows),執行總成本(Total Subtree
Cost);估計資源使用量
(EstimateIO/EstimateCPU)等。
 輸出估計執行計劃指令:
SET SHOWPLAN_ALL On (啟用)
SET SHOWPLAN_ALL Off (關閉)
查詢執行計劃
針對這段語法查詢其估計的
執行計劃
檢視執行計劃
 顯示執行計劃
◦ SET Statistics Profile On/Off
 顯示執行時間
◦ SET Statistics Time On/Off
 顯示使用的I/O數量
◦ SET Statistics IO On/Off
執行計劃
執行時間/使用的IO數量
圖形執行計劃
節點名稱 定義
實體作業 列出節點執行的實際作業,例如:叢集掃描,索引搜尋,
匯總,雜湊,巢狀連結。
邏輯作業 列出與實體作業相對應的邏輯作業,旨在描述實體作
業實際實作細節,例如:實體作業是合併連結,而邏輯作
業就是聯集
估計的執行模式 資料量少時採用Row,反之,則採用Batch
估計的運算子成本 估計執行實體作業所需的成本,如果要達到較佳的效
率,數值越低越好
估計的I/O成本 估計與作業相關的I/O成本
估計的子樹成本 估計在同一個子樹中,作業與在其之前的所有子作業,
累積的總成本
估計的CPU成本 估計與作業相關的CPU成本
估計的執行數目 執行次數
估計的資料列數目 估計執行作業之後會輸出,並傳遞給上一層作業的資
料列數目
估計的資料列大小 估計運算子所傳遞之資料列平均的大小
節點識別碼 在執行計劃中,節點唯一的識別碼
物件 表示有那些資料庫物件被目前節點所執行的作業所
存取
節點名稱 定義
述詞 表示在原始的查尋中,替物件所指定
的搜尋述詞
搜尋述詞 當我們執行索引搜尋時,表示用搜尋
述詞來搜尋索引的內容
已排序 表示是否透過索引,並且以排序過的
順序來取得資料列
輸出清單 有那些資料欄位被作業所傳回
快取的計劃大小 查詢計劃花了多少Cache進行處理
實際重新繫結 一或多個相關連的連結引數被改變,
並且連結的內部必須被重新評估
實際倒轉 沒有任何一個相關的引數被變更,並
且再度使用先前內部的結果集
儲存體 實際存放資料的物件,例如:Partition
執行計劃運算操作
運算子分類 圖示 運算子名稱 功能說明
平行處理 各類運算子
(Parallelism)
• 使用平行處理的運算子,圖示
上方顯示平行處理圖示
• 如果執行成本高於5,則自動
使用平行處理
索引操作 叢集索引掃描
(Clustered Index Seek)
使用索引的搜詢能力,從叢集索
引中擷取資料列
叢集索引掃描 掃描查詢執行計劃的查詢條件
資料行中指定的叢集索引(等於
資料表掃描)
非叢集索引搜尋 使用索引的搜尋能力,從非叢集
索引中擷取資料列
非叢集索引掃描 擷取查詢條件資料行中所指定
非叢集索引的所有資料列
執行計劃運算操作
運算子分類 圖示 運算子名稱 功能說明
索引操作 書籤查閱
(Bookmark
LookUp)
• 每一個非叢集索引都會存放指
向叢集索引的鍵值(Clustering
Key)
• 當使用某一個非叢集索引(但
沒有包含所有需要回傳的欄位
或僅加入單一欄位),無法得到
所有需要回傳的欄位時,就需
要參照叢集索引的對照的紀錄,
找出其它所需要的欄位
• SQL 2005之後使用Nested
Loop圖示取代,因此執行計劃
中會出現先搜尋非叢集索引後,
再用叢集索引將其它需要的欄
位找出的執行方式
• 解決方法:把需要輸出的欄位
新增到[內含資料行]中作為參
考
執行計劃運算操作
運算子分類 圖示 運算子名稱 功能說明
索引操作 RID查閱
(Key
LookUp)
• 為Heap資料表操作(沒有建置叢集
索引資料表)
• 為資料表沒有建置叢集索引時,非叢
集索引僅會存放RID值(Row ID)
• 當使用某一個非叢集索引(但沒有包
含所有需要回傳的欄位或僅加入單
一欄位),無法得到所有需要回傳的
欄位時,就需要參照現有的資料列識
別碼(RID)進行查閱資料表中的資料
列,找出其它所需要的欄位
資料表操作 資料表掃描
(Table Scan)
• 沒有建置叢集索引,也沒有符合的非
叢集索引可以使用的狀況下
• 通常需要耗費大量的I/O
• 高執行成本
• 有很高的機會與平行處理合併使用
執行計劃運算操作
運算子分類 圖示 運算子名稱 功能說明
彙總計算操作 計算純量
(Compute
Scalar)
• 評估運算式,以產生計算的純
量值
• 如Sum, Count, Max, Min,
Avg, Distinct…等
• [實際資料列],[實際重新繫
結],[實際倒轉]資訊可能不會
顯示在屬性視窗中
• 使用CPU資源進行運算
資料表聯結操
作
巢狀迴圈 • 執行計劃中,先存取的資料表
為外部資料表,後存取則為內
部資料表
• 使用索引,從外部資料表中,每
取出一筆符合篩選條件的
Row後,與內部資料表進行比
對
• 演算法的複雜度等於[內部資
料表]*[外部資料表]資料筆數
• 外部資料表最後事先排序
• 內部最好有建索引協助比對
巢狀迴圈
外部資料表
內部資料表
執行計劃運算操作
運算子分類 圖示 運算子名稱 功能說明
資料表聯接
操作
合併聯結
(Merge Join)
• 從兩邊的資料集中各取一個值進行
比對,若相等,就聯結這兩Row並回
傳,若不相等,把小的值丟棄,按順序
取下一個更大的值
• 做聯結的兩個資料集必須要事先按
照聯結條件欄位排序好
• 兩邊的資料集有一邊遍歷結束,整
個演算法就結束
• 演算法的複雜度取決於較大資料集
的資料筆數
• 只能以相等作為條件的聯接,如果
有重覆資料,則要採用多對多這種
聯接方式(會用到TempDb)
執行計劃運算操作
運算子分類 圖示 運算子名稱 功能說明
資料表聯結
操作
雜湊比對
(Hash Join)
• 雜湊演算法分為兩步驟:
• 建立: 選擇兩個要作聯結的資
料集中的其中一個,根據紀錄的
值建立一張在記憶體中的雜湊
表
• 探索: 選擇另一資料集,將裡面
的紀錄值依次帶入,找出符合條
件,回傳可聯接資料列
• 演算法複雜度=兩個資料集的資料
列數加總
• 聯結的資料集不需事先排序,也無須
索引
• 經常會升級成使用平行處理
各種不同的聯結
巢狀迴圈 合併聯結 雜湊比對
最適當時機 相對較小的兩個
資料集,且Join的
欄位有索引
資料集中等或較
大,且Join欄位有
叢集索引,或結果
集需要排序
資料集大,尤其適
合資料倉儲的複
雜查詢SQL
平行性 可支援多個使用
者同時查詢
有索引的
Many2One平行
能力較
Many2Many強
資源消耗大,不適
合多個使用者同
時查詢
條件欄位的限制 無 只能是等號 只能是等號
記憶體使用量 不使用 除非需要排序 使用
是否使用
TempDb
不使用 Many2Many會
使用
使用
是否需要事先排
序
不需要 需要 不需要
判斷聯結的執行計劃是否合適
 巢狀迴圈
◦ 適合用於資料集比較小的情況
◦ 外部資料表資料量大的時候,不建議使用巢
狀迴圈;因為內部資料表會被遍歷很多次,徒
然增加資源消耗
◦ 若執行計劃的Executes(執行次數)值很大,
則不適用巢狀迴圈
執行計劃運算操作
運算子分類 圖示 運算子名稱 功能說明
排序操作 排序
(Sort)
• 分為遞增/遞減排序
• 如果排序的欄位沒有索引,或索引無
法提供預期的排序,會增加查詢成本
• 若資料表有建叢集索引時,會依據建
索引的欄位進行排序
篩選操作 篩選
(Filter)
• 掃描輸入,只傳回滿足指定條件資料
行中篩選運算式的資料列
• T-SQL為Having時使用
• 篩選並不會減少太多的資源耗損,因
為篩選運算子總是在最後出現
語法的執行順序
From
找出需要那些資
料表
Where
找出符合條件的
資料列
Group By
依指定的欄位組
織資料列
Having
找出符合條件的
資料組
Select
指定回傳的欄位
資料
Order By
排序資料列
Result
最後的資料結果
集
On
找出符合條件的
聯結資料列
Join
兩張資料表聯結
不同SQL語句執行的方式對於執
行計劃的影響
 Ad Hoc
◦ 一般的T-SQL語句或批次命令
◦ 使用Exec()指令執行的動態組合的T-SQL
語句
◦ 語法、文字段落(換行位置也必須完全相同)
及指定的查詢條件要完全相同的狀況下,才
視為是相同的語法
◦ 執行計劃重用率極低
◦ 資料庫的參數化(Parameterization)選項,可
以用來調整Ad Hoc查詢自動參數化的程度
不同SQL語句執行的方式對於執
行計劃的影響
 Stored Procedure
◦ 第一次執行時編譯其執行計劃
◦ 因為語法固定,因此大部份狀況下可以重用
執行計劃,省下CPU編譯執行計劃時間
◦ 執行時建議加上Schema名稱(擁有者),如:
dbo.myStoredProcedure,讓SQL Server可
以直接存取特定程序的執行計劃
◦ SQL Server 2005後,僅會針對在Stored
Procedure中需要重新編譯的T-SQL進行編
譯,不需要全部重編譯
不同SQL語句執行的方式對於執
行計劃的影響
 sp_executeSql
◦ 可以有效執行參數化查詢,不需要編譯後續
相同的參數化查詢陳述式
◦ 執行可重複使用許多次的T-SQL或動態建
立陳述式或批次
◦ 當陳述式參數值的變更是唯一的變數時,可
以使用sp_executesql取代預存程序
篩選資料在聯結上的建議
 當數個資料表作聯結(Join)的時候,建議
先使用Where把一些不需要的Row過濾
掉
 聯結的篩選條件要明確,如果On的條件
不足會取得不必要的資料,增加成本
 檢視圖型執行計劃時,可以先看篩選資
料是否在聯結之前
Optimizer Hint的使用
 Hint分為以下五種:
◦ Table Hint:查詢時指定特定的索引
◦ Join Hint:指定兩個資料表聯結時的策略
◦ Query Hint:影響Group和Union的運作
◦ Lock Hint:避免不好的鎖定
◦ View Hint:指定View的Index
(Hint在大部份的使用情境上反而是造成效能降低的原
兇)
是否該使用Hint
 先考濾過以下幾點:
◦ 若效能問題是出在Store Procedure,請重新
編譯Store Procedure。
◦ 檢核查詢參數是否合適,並試著改寫。
◦ 檢視目前的索引,並藉由執行計劃的反饋進
行調整。
◦ 更新表格的統計資訊。
(考慮過上述所有項目後,再審慎使用Hint)
(非到不得已,不要使用)
分類 查詢提示詞 描述
{Hash | Order} Group 指定使用以雜湊或排序的方式來執行具有
Group By、Distinct或Compute子查詢中的彙
總。
{Concat | Hash |
Merge}
Union
指定Union作業都是以合併、雜湊或串連的方
式來執行。
{Loop | Merge | Hash}
Join
指定整個查詢中的聯結作業是以Loop、
Merge、或Hash的方式來執行。
Fast [資料列數] 指定將查詢最佳化,以快速擷取指定的資料筆
數。[資料列數]為非負數整數,在快速傳回指
定的資料筆數後,查詢將會繼續執行,且產生完
整的結果集
Force Order 指定在查詢最佳化期間,使用查詢語法所設定
的聯結順序
Maxdop [CPU數量] 更改批次查詢時sp_configure所設定的”平行
處理原則最大程度”伺服器組態選項。若
Maxdop查詢提示超出伺服器個體所設定的預
設值時,則不會有任何效果。
分類 查詢提示詞 描述
Optimize For (
@變數名, …)
指示查詢最佳化工具在查詢進行編譯和最佳化時,
使用特定的本機變數值。只有在查詢最佳化期間,
才使用此變數值,在查詢執行期間,則不使用此變數
值。
Optimize For
Unknown
指示查詢最佳化工具在編譯及最佳化查詢時,將統
計資訊(非初始值)用於所有區域變數,包括以強制參
數化所建立的參數。
Parameterizatio
n
{Simple | Forced}
指定SQL Server查詢最佳化工具在查詢完成時套用
在查詢的參數化規則。Parameterization查詢提示
只能指定在計劃指南內,不能在查詢中直接指定。
Recompile 指示SQL Server放棄在執行此次查詢後所產生的
計劃,強制查詢最佳化工具在下次執行相同的查詢
時,將會重新編譯查詢計劃。在未指定Recompile的
情況下,SQL Server會快取查詢計劃並重複使用。
Robust Plan 強制查詢最佳化工具嘗試一項適用最大可能資料列
數的執行計劃,可能會犧牲效能。
分類 查詢提示詞 描述
Keep Plan 強制查詢最佳化工具放寬查詢的估計重新編譯臨
界值。估計重新編譯臨界值是因為資料表執行了
Update, Delete, Merge或Insert陳述式後而變動了
估計數目的索引資料列數時,將會自動重新編譯查
詢。指定Keep Plan可確保查詢不會依照資料表
的資料列數的變動而進行重新編譯。
KeepFixed
Plan
強制查詢最佳化工具不會因統計資訊的變更而重
新編譯查詢。指定KeepFixed Plan可以確保當只
有來源資料表的結構描述發生改變或針對來源資
料表執行了sp_recompile時,才會重新編譯查詢。
Expand View 指定展開索引檢視,並且查詢最佳化工具不會使用
任何索引檢視來代替查詢,而是直接使用檢視中所
參考到的底層資料表進行查詢。此查詢提示會間
接禁止在查詢計劃中使用索引檢視及其索引。
只有在Select查詢中直接參考索引檢視,並且已指
定With (NoExpand)或 With (NoExpand,
Index(index_value [, … n]))時,才不會展開此份索
引檢視。
MaxRecuresio
n數量
指定該次查詢的最大遞迴數目。數量必須介於0和
32767之間的非負整數。當指定為0時,不會套用
任何限制。如果未指定,伺服器預設限制是100。
分類 查詢提示詞 描述
Use Plan
N’xml_plan’
強制查詢最加化工具將現有的查詢計劃用
在’xml_plan’所指定的查詢上。
Table Hint(物
件名,資料表提
示, …)
將指定的”資料表提示”套用至對應到的資料表或
檢視。
NoExpand 指定當查詢最佳化工具處理查詢時,不會展開任
何索引檢視。查詢最佳化工具會直接處理含有
索引的檢視。NoExpand只適用於索引檢視。
Index(索引名
或號碼[, …n])
或
Index=(索引名
或號碼)
指定當查詢最佳化工具在處理查詢時,所要使用
的一個或多個索引的名稱或識別號碼。替代的
Index=語法指定單一索引值。每份資料表只能
指定一個索引提示。
如果叢集索引存在,Index(0)會強制執行叢集索引
掃描,Index(1)會強制執行叢集索引掃描或搜尋。
如果沒有叢集索引,Index(0)會強制執行資料表掃
描,Index(1)會解譯為一則錯誤。
FastFirstRow 等同於查詢提示中的Option(Fast 1),未來的SQL
Server版本將不再提供此功能。
分類 查詢提示詞 描述
從程式出發
 從硬體角度出發
 從SQL Server本質出發
 從語法出發
 從設計出發
設計就是用來解決問題
討論的議題
 反正規化
 樹狀資料結構
 主鍵的選擇
 物件導向
 歷史表
 二進位大型物件
 資料切割
 Null的意義
 視窗運算
 隨機與分頁
 模糊搜尋
 加/解密
 SQL Injection
 平行I/O
 批次處理
反正規化
人員表
ID 名稱 生日 嗜好項目
1 小華 1988/03/24 1,3,5,10
2 小英 1982/04/22 1,2,4,5
3 小花 1981/03/28 2,3,5,6
4 小明 1999/02/31 2,3,4,5
反正規化所帶來的影響
 無法潔癖
 資料完整度會出現不一致
 不易針對多值欄位進行查詢篩選
 不易針對多值欄位作Join的條件欄位
 多值欄位所能儲存的項目數相依於該欄
位的長度
 好處:
◦ 不需要因過度正規化而需要Join多張表
樹狀資料結構
員工表
ID 名稱 雇用日期 長官ID
1 小華 1998/04/21
2 小明 2010/03/27 1
3 小花 2010/04/28 1
4 小英 2012/05/01 2
小華
小明 小花
小英
樹狀資料結構的影響
 查詢不方便
 使用遞迴查詢可能會造成資源耗竭
 優點:
◦ 節點資料異動快速且簡單
主鍵的選擇
訂單
ID 單號 品項 品名
1 1000724-001 1 可樂
2 1000724-002 2 美工刀
3 1000725-001 1 可樂
4 1000726-001 2 膠帶
主鍵的選擇的影響
 正確的選擇主鍵有助於讓系統更容易維
護
 避免儲存不必要的資料
主鍵跳號
名單
ID 名稱 年齡
1 小英 10
3 小明 11
4 小華 12
6 小光 11

More Related Content

What's hot

Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介IBM Analytics Japan
 
Sql serverデータアクセスの基本動作。荒ぶった方法で確認してみよう
Sql serverデータアクセスの基本動作。荒ぶった方法で確認してみようSql serverデータアクセスの基本動作。荒ぶった方法で確認してみよう
Sql serverデータアクセスの基本動作。荒ぶった方法で確認してみようMasayuki Ozawa
 
Sql server よく聞く設定とその効果
Sql server よく聞く設定とその効果Sql server よく聞く設定とその効果
Sql server よく聞く設定とその効果Masayuki Ozawa
 
Synapse lakedatabase
Synapse lakedatabaseSynapse lakedatabase
Synapse lakedatabaseRyoma Nagata
 
まずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングまずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングKosuke Kida
 
大規模負荷試験時にやったこと
大規模負荷試験時にやったこと大規模負荷試験時にやったこと
大規模負荷試験時にやったことまべ☆てっく運営
 
新機能によるデータベースシステムの改善ポイント
新機能によるデータベースシステムの改善ポイント新機能によるデータベースシステムの改善ポイント
新機能によるデータベースシステムの改善ポイントオラクルエンジニア通信
 
[D13] Disaster Recovery環境をOracle Standard Editionでつくる by Miyuki Ohasi
[D13] Disaster Recovery環境をOracle Standard Editionでつくる by Miyuki Ohasi[D13] Disaster Recovery環境をOracle Standard Editionでつくる by Miyuki Ohasi
[D13] Disaster Recovery環境をOracle Standard Editionでつくる by Miyuki OhasiInsight Technology, Inc.
 
「Azure durable functions」の概要
「Azure durable functions」の概要「Azure durable functions」の概要
「Azure durable functions」の概要裕之 木下
 
Sql server 構築 運用 tips
Sql server 構築 運用 tipsSql server 構築 運用 tips
Sql server 構築 運用 tipsMasayuki Ozawa
 
【旧版】Oracle Exadata Cloud Service:サービス概要のご紹介 [2021年7月版]
【旧版】Oracle Exadata Cloud Service:サービス概要のご紹介 [2021年7月版]【旧版】Oracle Exadata Cloud Service:サービス概要のご紹介 [2021年7月版]
【旧版】Oracle Exadata Cloud Service:サービス概要のご紹介 [2021年7月版]オラクルエンジニア通信
 
PostgreSQL DBのバックアップを一元化しよう
PostgreSQL DBのバックアップを一元化しようPostgreSQL DBのバックアップを一元化しよう
PostgreSQL DBのバックアップを一元化しようYukiya Hayashi
 
[GKE & Spanner 勉強会] Cloud Spanner の技術概要
[GKE & Spanner 勉強会] Cloud Spanner の技術概要[GKE & Spanner 勉強会] Cloud Spanner の技術概要
[GKE & Spanner 勉強会] Cloud Spanner の技術概要Google Cloud Platform - Japan
 
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -歩 柴田
 
Veeam新機能 徹底解説 Part 1:Oracle RMAN連携 ~運用変えずVeeamでらくらくバックアップ&リストア~
Veeam新機能 徹底解説 Part 1:Oracle RMAN連携 ~運用変えずVeeamでらくらくバックアップ&リストア~Veeam新機能 徹底解説 Part 1:Oracle RMAN連携 ~運用変えずVeeamでらくらくバックアップ&リストア~
Veeam新機能 徹底解説 Part 1:Oracle RMAN連携 ~運用変えずVeeamでらくらくバックアップ&リストア~株式会社クライム
 

What's hot (20)

DataGuard体験記
DataGuard体験記DataGuard体験記
DataGuard体験記
 
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
 
Sql serverデータアクセスの基本動作。荒ぶった方法で確認してみよう
Sql serverデータアクセスの基本動作。荒ぶった方法で確認してみようSql serverデータアクセスの基本動作。荒ぶった方法で確認してみよう
Sql serverデータアクセスの基本動作。荒ぶった方法で確認してみよう
 
Sql server よく聞く設定とその効果
Sql server よく聞く設定とその効果Sql server よく聞く設定とその効果
Sql server よく聞く設定とその効果
 
Oracle Big Data Cloud Serviceのご紹介
Oracle Big Data Cloud Serviceのご紹介Oracle Big Data Cloud Serviceのご紹介
Oracle Big Data Cloud Serviceのご紹介
 
Synapse lakedatabase
Synapse lakedatabaseSynapse lakedatabase
Synapse lakedatabase
 
まずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングまずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニング
 
大規模負荷試験時にやったこと
大規模負荷試験時にやったこと大規模負荷試験時にやったこと
大規模負荷試験時にやったこと
 
新機能によるデータベースシステムの改善ポイント
新機能によるデータベースシステムの改善ポイント新機能によるデータベースシステムの改善ポイント
新機能によるデータベースシステムの改善ポイント
 
[D13] Disaster Recovery環境をOracle Standard Editionでつくる by Miyuki Ohasi
[D13] Disaster Recovery環境をOracle Standard Editionでつくる by Miyuki Ohasi[D13] Disaster Recovery環境をOracle Standard Editionでつくる by Miyuki Ohasi
[D13] Disaster Recovery環境をOracle Standard Editionでつくる by Miyuki Ohasi
 
「Azure durable functions」の概要
「Azure durable functions」の概要「Azure durable functions」の概要
「Azure durable functions」の概要
 
Sql server 構築 運用 tips
Sql server 構築 運用 tipsSql server 構築 運用 tips
Sql server 構築 運用 tips
 
【旧版】Oracle Exadata Cloud Service:サービス概要のご紹介 [2021年7月版]
【旧版】Oracle Exadata Cloud Service:サービス概要のご紹介 [2021年7月版]【旧版】Oracle Exadata Cloud Service:サービス概要のご紹介 [2021年7月版]
【旧版】Oracle Exadata Cloud Service:サービス概要のご紹介 [2021年7月版]
 
Oracle Tablespace介紹
Oracle Tablespace介紹Oracle Tablespace介紹
Oracle Tablespace介紹
 
PostgreSQL DBのバックアップを一元化しよう
PostgreSQL DBのバックアップを一元化しようPostgreSQL DBのバックアップを一元化しよう
PostgreSQL DBのバックアップを一元化しよう
 
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦
 
[GKE & Spanner 勉強会] Cloud Spanner の技術概要
[GKE & Spanner 勉強会] Cloud Spanner の技術概要[GKE & Spanner 勉強会] Cloud Spanner の技術概要
[GKE & Spanner 勉強会] Cloud Spanner の技術概要
 
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -
 
Stress testing using SQLIOSIM and SQLIO
Stress testing using SQLIOSIM and SQLIOStress testing using SQLIOSIM and SQLIO
Stress testing using SQLIOSIM and SQLIO
 
Veeam新機能 徹底解説 Part 1:Oracle RMAN連携 ~運用変えずVeeamでらくらくバックアップ&リストア~
Veeam新機能 徹底解説 Part 1:Oracle RMAN連携 ~運用変えずVeeamでらくらくバックアップ&リストア~Veeam新機能 徹底解説 Part 1:Oracle RMAN連携 ~運用変えずVeeamでらくらくバックアップ&リストア~
Veeam新機能 徹底解説 Part 1:Oracle RMAN連携 ~運用変えずVeeamでらくらくバックアップ&リストア~
 

Similar to SQL Server效能調校

Oracle北大青鸟完全教程
Oracle北大青鸟完全教程Oracle北大青鸟完全教程
Oracle北大青鸟完全教程yiditushe
 
数据库性能诊断的七种武器
数据库性能诊断的七种武器数据库性能诊断的七种武器
数据库性能诊断的七种武器Leyi (Kamus) Zhang
 
Alibaba数据库运维最佳实践
Alibaba数据库运维最佳实践Alibaba数据库运维最佳实践
Alibaba数据库运维最佳实践freezr
 
Azure Data Lake 簡介
Azure Data Lake 簡介Azure Data Lake 簡介
Azure Data Lake 簡介Herman Wu
 
诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础 诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础 maclean liu
 
了解真实的Oracle unbreakable database appliance
了解真实的Oracle unbreakable database appliance了解真实的Oracle unbreakable database appliance
了解真实的Oracle unbreakable database appliancemaclean liu
 
MySQL5.6新功能
MySQL5.6新功能MySQL5.6新功能
MySQL5.6新功能郁萍 王
 
利用统一存储获得无与伦比的速度,简化系统,并节省更多
利用统一存储获得无与伦比的速度,简化系统,并节省更多利用统一存储获得无与伦比的速度,简化系统,并节省更多
利用统一存储获得无与伦比的速度,简化系统,并节省更多ITband
 
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫Justin Lin
 

Similar to SQL Server效能調校 (20)

Oracle北大青鸟完全教程
Oracle北大青鸟完全教程Oracle北大青鸟完全教程
Oracle北大青鸟完全教程
 
数据库性能诊断的七种武器
数据库性能诊断的七种武器数据库性能诊断的七种武器
数据库性能诊断的七种武器
 
六合彩
六合彩六合彩
六合彩
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 
Ibm solid db_基础
Ibm solid db_基础Ibm solid db_基础
Ibm solid db_基础
 
Alibaba数据库运维最佳实践
Alibaba数据库运维最佳实践Alibaba数据库运维最佳实践
Alibaba数据库运维最佳实践
 
六合彩
六合彩六合彩
六合彩
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 
Azure Data Lake 簡介
Azure Data Lake 簡介Azure Data Lake 簡介
Azure Data Lake 簡介
 
诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础 诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础
 
了解真实的Oracle unbreakable database appliance
了解真实的Oracle unbreakable database appliance了解真实的Oracle unbreakable database appliance
了解真实的Oracle unbreakable database appliance
 
MySQL5.6新功能
MySQL5.6新功能MySQL5.6新功能
MySQL5.6新功能
 
利用统一存储获得无与伦比的速度,简化系统,并节省更多
利用统一存储获得无与伦比的速度,简化系统,并节省更多利用统一存储获得无与伦比的速度,简化系统,并节省更多
利用统一存储获得无与伦比的速度,简化系统,并节省更多
 
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
 

More from 國昭 張

8th ddd taiwan study group bounded context integration
8th ddd taiwan study group  bounded context integration8th ddd taiwan study group  bounded context integration
8th ddd taiwan study group bounded context integration國昭 張
 
Ddd(meetup 2) ddd with clean architecture
Ddd(meetup 2) ddd with clean architectureDdd(meetup 2) ddd with clean architecture
Ddd(meetup 2) ddd with clean architecture國昭 張
 
20190126 ddd-meetup1
20190126 ddd-meetup120190126 ddd-meetup1
20190126 ddd-meetup1國昭 張
 
事件風暴-設計衝刺
事件風暴-設計衝刺事件風暴-設計衝刺
事件風暴-設計衝刺國昭 張
 
事件風暴-領域建模
事件風暴-領域建模事件風暴-領域建模
事件風暴-領域建模國昭 張
 
Scrum essential
Scrum essentialScrum essential
Scrum essential國昭 張
 
Docker進階探討
Docker進階探討Docker進階探討
Docker進階探討國昭 張
 
DDD架構設計
DDD架構設計DDD架構設計
DDD架構設計國昭 張
 
DDD系統分析
DDD系統分析DDD系統分析
DDD系統分析國昭 張
 
Asp.net core v1.0
Asp.net core v1.0Asp.net core v1.0
Asp.net core v1.0國昭 張
 
Redux+react js
Redux+react jsRedux+react js
Redux+react js國昭 張
 
架構設計-資料存取的選擇
架構設計-資料存取的選擇架構設計-資料存取的選擇
架構設計-資料存取的選擇國昭 張
 
前端自動化工具
前端自動化工具前端自動化工具
前端自動化工具國昭 張
 

More from 國昭 張 (20)

8th ddd taiwan study group bounded context integration
8th ddd taiwan study group  bounded context integration8th ddd taiwan study group  bounded context integration
8th ddd taiwan study group bounded context integration
 
Ddd(meetup 2) ddd with clean architecture
Ddd(meetup 2) ddd with clean architectureDdd(meetup 2) ddd with clean architecture
Ddd(meetup 2) ddd with clean architecture
 
20190126 ddd-meetup1
20190126 ddd-meetup120190126 ddd-meetup1
20190126 ddd-meetup1
 
事件風暴-設計衝刺
事件風暴-設計衝刺事件風暴-設計衝刺
事件風暴-設計衝刺
 
事件風暴-領域建模
事件風暴-領域建模事件風暴-領域建模
事件風暴-領域建模
 
單元測試
單元測試單元測試
單元測試
 
Docker實務
Docker實務Docker實務
Docker實務
 
Scrum essential
Scrum essentialScrum essential
Scrum essential
 
Docker進階探討
Docker進階探討Docker進階探討
Docker進階探討
 
Vue
VueVue
Vue
 
Docker基礎
Docker基礎Docker基礎
Docker基礎
 
DDD架構設計
DDD架構設計DDD架構設計
DDD架構設計
 
DDD系統分析
DDD系統分析DDD系統分析
DDD系統分析
 
DDD引導
DDD引導DDD引導
DDD引導
 
前端測試
前端測試前端測試
前端測試
 
Asp.net core v1.0
Asp.net core v1.0Asp.net core v1.0
Asp.net core v1.0
 
Redux+react js
Redux+react jsRedux+react js
Redux+react js
 
React js
React jsReact js
React js
 
架構設計-資料存取的選擇
架構設計-資料存取的選擇架構設計-資料存取的選擇
架構設計-資料存取的選擇
 
前端自動化工具
前端自動化工具前端自動化工具
前端自動化工具
 

SQL Server效能調校