2015q4_InnerCourse_Presentation
-
Upload
hung-wei-liu -
Category
Technology
-
view
93 -
download
0
Transcript of 2015q4_InnerCourse_Presentation
![Page 2: 2015q4_InnerCourse_Presentation](https://reader033.fdocuments.net/reader033/viewer/2022052514/5a6e08697f8b9a635a8b4fa3/html5/thumbnails/2.jpg)
OutletIntroduction
Index
cluster index
non-cluster index
Concurrency Control
optimistic locking
![Page 3: 2015q4_InnerCourse_Presentation](https://reader033.fdocuments.net/reader033/viewer/2022052514/5a6e08697f8b9a635a8b4fa3/html5/thumbnails/3.jpg)
Introduction
![Page 4: 2015q4_InnerCourse_Presentation](https://reader033.fdocuments.net/reader033/viewer/2022052514/5a6e08697f8b9a635a8b4fa3/html5/thumbnails/4.jpg)
IntroductionDatabase I/O
page, 4KB, 8KB, or 16KB
db I/O Unit
Read / Write, Disk <—> Memory
I/O >>>> CPU
![Page 5: 2015q4_InnerCourse_Presentation](https://reader033.fdocuments.net/reader033/viewer/2022052514/5a6e08697f8b9a635a8b4fa3/html5/thumbnails/5.jpg)
Index
![Page 6: 2015q4_InnerCourse_Presentation](https://reader033.fdocuments.net/reader033/viewer/2022052514/5a6e08697f8b9a635a8b4fa3/html5/thumbnails/6.jpg)
Index
Index File
Data file
Index entries
Direct search fordata entries
Data entries
DataRecords
![Page 7: 2015q4_InnerCourse_Presentation](https://reader033.fdocuments.net/reader033/viewer/2022052514/5a6e08697f8b9a635a8b4fa3/html5/thumbnails/7.jpg)
IndexIndex entries
B+ tree, non-leaf node, search key
Data entries
B+ tree, leaf node
Data records
record id (rid)
![Page 8: 2015q4_InnerCourse_Presentation](https://reader033.fdocuments.net/reader033/viewer/2022052514/5a6e08697f8b9a635a8b4fa3/html5/thumbnails/8.jpg)
IndexFan-out
non-leaf node, # of children (denoted as F)
Search, (logFN + 1) I/O -> page data
In practice, F is at least 100
log100106 = 3,
3, or 4 I/O <=> 106 records
![Page 9: 2015q4_InnerCourse_Presentation](https://reader033.fdocuments.net/reader033/viewer/2022052514/5a6e08697f8b9a635a8b4fa3/html5/thumbnails/9.jpg)
IndexData entries
K*: Search key, and other fields.
Clustered index
<K, rid>: Search key, and record id
<K, rid-list>: Search key, and record id list.
![Page 10: 2015q4_InnerCourse_Presentation](https://reader033.fdocuments.net/reader033/viewer/2022052514/5a6e08697f8b9a635a8b4fa3/html5/thumbnails/10.jpg)
IndexCluster index vs non-cluster index
Clustered index ( Primary key)
K*
Non-clustered index
<K, rid>
<K, rid-list>
![Page 11: 2015q4_InnerCourse_Presentation](https://reader033.fdocuments.net/reader033/viewer/2022052514/5a6e08697f8b9a635a8b4fa3/html5/thumbnails/11.jpg)
Clustered IndexIndex entries
Direct search fordata entries
Data entries
DataRecords
![Page 12: 2015q4_InnerCourse_Presentation](https://reader033.fdocuments.net/reader033/viewer/2022052514/5a6e08697f8b9a635a8b4fa3/html5/thumbnails/12.jpg)
Non-clustered IndexIndex entries
Direct search fordata entries
Data entries
DataRecords
![Page 13: 2015q4_InnerCourse_Presentation](https://reader033.fdocuments.net/reader033/viewer/2022052514/5a6e08697f8b9a635a8b4fa3/html5/thumbnails/13.jpg)
Index Data TypeInt, Long, Guid
Sequential vs non-sequential
Int, Long => Sequential
Guid => ?
![Page 14: 2015q4_InnerCourse_Presentation](https://reader033.fdocuments.net/reader033/viewer/2022052514/5a6e08697f8b9a635a8b4fa3/html5/thumbnails/14.jpg)
Composite index
Direct search fordata entries
Data entries
idx_1
idx_2
![Page 15: 2015q4_InnerCourse_Presentation](https://reader033.fdocuments.net/reader033/viewer/2022052514/5a6e08697f8b9a635a8b4fa3/html5/thumbnails/15.jpg)
Composite IndexIncrease the tree-depth
Search key
〇 idx_1 only
〇 <idx_1, idx_2>
✕ idx_2 only
The order of indexes
![Page 16: 2015q4_InnerCourse_Presentation](https://reader033.fdocuments.net/reader033/viewer/2022052514/5a6e08697f8b9a635a8b4fa3/html5/thumbnails/16.jpg)
Concurrency Control
![Page 17: 2015q4_InnerCourse_Presentation](https://reader033.fdocuments.net/reader033/viewer/2022052514/5a6e08697f8b9a635a8b4fa3/html5/thumbnails/17.jpg)
Optimistic lockingOptimistic vs Pessimistic
Optimistic Pessimistic
Conflict Conflict detect Conflict avoid
效率 快 慢
實作 很容易 較麻煩
Lock 無 有
考慮因素 1. 不常衝突 2. 衝突代價低
1. 常常衝突 2. 衝突代價⾼
![Page 18: 2015q4_InnerCourse_Presentation](https://reader033.fdocuments.net/reader033/viewer/2022052514/5a6e08697f8b9a635a8b4fa3/html5/thumbnails/18.jpg)
Optimistic locking參考資料, Java Hibernate實作
概念
有個欄位為rowVersion
int vs timestamp
每次db update時,由db檢查該值,並且負責更新這個欄位
判斷db update時, rowVersion是否被別⼈修改了。
![Page 19: 2015q4_InnerCourse_Presentation](https://reader033.fdocuments.net/reader033/viewer/2022052514/5a6e08697f8b9a635a8b4fa3/html5/thumbnails/19.jpg)
Optimistic lockingUpdating
rowVersion == original rowVersion ?
If no, reject it.
rowVersion += 1
![Page 20: 2015q4_InnerCourse_Presentation](https://reader033.fdocuments.net/reader033/viewer/2022052514/5a6e08697f8b9a635a8b4fa3/html5/thumbnails/20.jpg)
Pessimistic lockingBuilding lock manager
Types:
exclusive write lock
exclusive read lock
read/write lock
Lock Table
Dead lock
Timeout, for a victim
![Page 21: 2015q4_InnerCourse_Presentation](https://reader033.fdocuments.net/reader033/viewer/2022052514/5a6e08697f8b9a635a8b4fa3/html5/thumbnails/21.jpg)
參考資料Clustered vs non-clustered index
Microsoft, Clustered and Nonclustered Indexes Described
Wiki, database index