開發人員一般對資料庫的研究都不是太深,很多情況下都會只關心業務層的邏輯跟**的效能優化, 尤其是初學者,對資料庫的研究都比較有限。
例如:做乙個簡單的查詢或者修改 功能時、本來是一段非常簡單的sql語句。
update couponsinfodn set parentresvno='fca77a15-771d-49d1-a7d2-f9e0a0d71dd1', state=0, modifyuser='收銀1', modifytime=getdate(), usedgreencoin='', activitycode='', usedate='2019-09-19 18:20:24'
where code='dn20191017175028492232377'
and startdate<=getdate()
and enddate>=getdate()
and state=0
這個功能上線時,資料庫的表是新建的,所以感覺不到任何差異,沒有發現任何問題
當上線10天左右時間,這張表中資料達到100萬以上的時候,就會發現,執行這個語句就會發生表死鎖,
然後用sql語句在庫中執行,發現直接表死鎖,這個明顯就是沒有新增字段聯合索引導致的
所以在新增 code startdate enddate state 這4個字段的聚合索引後,發現問題就解決了,效能有原來的8096 直接到了100 毫秒左右。
建立非聚合 的 復合索引
create nonclustered index idx_codedate on couponsinfodn
(code,startdate,enddate)
說明:create 建立
nonclustered index 非聚合索引
idx_codedate 索引名稱 (自定義)
couponsinfodn 需要新增索引的表名
(code,startdate,enddate) 復合索引的 字段,這裡注意一下,字段之間是有順序規則了,否則還是有差異。需要把可以最大程度縮小範圍的字段放在第一位,依次 排列。
論MongoDB索引選擇的重要性
線上某業務,頻繁出現iops 使用率100 的 每秒4000iops 現象,每次持續接近1個小時,從慢請求的日誌發現是乙個 getmore 請求耗時1個小時,導致iops高 深入調查之後,最終發現竟是乙個索引選擇的問題。2017 11 01t15 04 17.498 0800 i command c...
索引的重要性
昨天下午,徐州市百大超市 的吉經理又打 過來,說 商服務系統中的 銷售查詢 模組無法正常執行,鬱悶,難道又要跑一趟?開啟計算機,使用 遠端登入 竟然可以登入到他們的伺服器,想起來他們最近換了光纖,也就不奇怪了,呵呵,爽,不過到時候得建議他們禁用遠端登入啦,呵呵 言歸正傳,看了一下頁面中的 沒問題呀,...
論安全的重要性
論安全的重要性 安全 是乙個永不過時的話題。在我們的現實生活中,無數的事實告訴我們,凡是無視安全的行為必將付出慘痛的代價。世界上每天都在發生著安全事故,汽車超載,超速行駛,闖紅燈 生產單位偷工減料,違規操作 公共服務場所無視安全規範 種種無視安全的情況造成了一起又一起的安全事故。慘痛的教訓告訴我們任...