Retry
database knowledge-sharing
2017年4月28日 星期五
[SQL Server] Deadlock案例分析 : 透過Join user-defined table type 來更新資料所引發的死結
在前幾個禮拜查看
deadlock extended event
時,發現有一段更新的語法被當作
Victim(
受害者
)
給放棄掉了,由於此段語法是重要的商業邏輯,且
AP
端沒有再次做
Retry
。
立馬拉出
deadlock
的
graph
跟
xml
查看其發生的原因,如下圖:
閱讀更多 »
2017年4月21日 星期五
SQL Server Performance tuning 兩年菜鳥心得雜談
前言
畢業至今也兩年多了,第一份工作也就是現在的工作,一開始主要擔任後端開發的工程師,串接後端的
Service
,主要負責商業邏輯層跟資料存取層的開發。
由於公司產業的關係,對於交易效能有極度的需求,為了避免不必要的
I/O
存取,所以大部分的商業邏輯都寫在資料庫,所以有很多的時間在接觸資料庫的開發。
後來在效能調校的工作上有點小小成績,而且也玩出興趣來了,在前輩的
Promote
下成為我們
team
的
DB Owner
。
在此也特別感謝我們公司的前輩們,放任我選擇自己所愛的領域,自由的發展,也不時的糾正出我的錯誤,才能有今天的我。
還記得那時候剛來公司三個多月就上錯了
Script
把
Production
的
table
給
Drop
掉了
(
汗
)
,不過那是另一段故事了
...
好了進入正題,分享一點小小心得
閱讀更多 »
2017年4月19日 星期三
[SQL Server][SSMS] 透過建立Code snippet提升工作效率
前言
每個
DBA
或者
DB Developer
經常都會有許多自己撰寫的花式
Script
,透過這些語法去查詢
DMV
或者
metadata
來幫助我們在緊急狀況的時候做
trouble shooting
,或者是
Load test
的時候輔助我們找出
bottleneck
。
但這些語法通常都不太好直接背起來,就算即時自己兜出來的
script,
其包含資訊也不是那麼完整。最後就會散落在各處(
onenote
、
txt...
等等
)
,如果找不到或忘記又得去網路上
google
。
每個同事也都會自己私藏一些好用的獨門秘方,卻沒有一個方便的共享平台。
這個問題困擾了我許久,後來我找到了在
SSMS 2012
之後推出的新功能
:
Code snippet manager
!
閱讀更多 »
[SQL Server] 了解ACID
前言
在
SQL SERVER
中,一段語法被執行時,被視為一個
Logical unit
(
邏輯位元
)
。
我們可以透過
BEGIN TRANSACTION
跟
ROLLBACK/COMMIT
將多段語法打包為一個
Logical unit
為了確保每個
Logical unit
在進行資料的變更時是可靠安全的,必須符合四大原則,也就是我們常聽到的
ACID
原則
。
Atomicity (
原子性、不可部份完成性)
Consistency (
一致性
)
Isolation (
隔離性
)
Durability (
持久性
)
下面分別介紹其定義並帶一些簡單的範例來解釋
閱讀更多 »
2017年4月18日 星期二
[SQL Server] 使用RETURN回傳數值發生Overflow
我們經常藉由
T-SQL
中的
RETURN
,來中斷我們的
Stored procedure
、一段
batch.
有時候也會透過
RETURN
來回傳一個數值。
但有些人可能不知道
:
透過
RETURN
只能回傳
INT
大小的數值
(
-2,147,483,648 to 2,147,483,647
)
如果數值超過此大小便會發生
Overflow
的
exception
。
即便你有宣告
BIGINT
、
DECIMAL
來承接參數。
閱讀更多 »
較新的文章
首頁
訂閱:
文章 (Atom)