亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

性能分析:hash索引導致delete慢

發布時間:2020-07-09 23:11:28 來源:網絡 閱讀:1765 作者:elison2000 欄目:數據庫

前端時間,應用人員上報一個性能問題:在生產環境中,每天凌晨時段數據庫運行很慢,一些EVENT運行失敗,導致一部分應用功能異常。


根據應用人員提供的時間段,對數據庫進行排查。


先對主機CPU、IO、數據庫連接等監控歷史數據進行分析,確認故障時間線,縮小時間范圍。

性能分析:hash索引導致delete慢


從上圖看到0:30左右,數據庫活動連接由0增到200,1:09活動連接數增到400+,數據庫連接異常增高,需要進一步分析數據庫此時間在執行什么操作。


性能分析:hash索引導致delete慢

對抓取到的歷史數據(主機部署了shell監控腳本)進行分析:在0:30,數據庫正在對表_1030做delete操作,其他線程在等待表鎖。

綜合以上,梳理出故障時間線:

監控數據顯示,0:30表_1030進行delete操作,該操作在1:15分左右才執行完成,該操作運行了40+分鐘左右,此期間表_1030的select操作被阻塞,導致數據庫連接從0升高到200,最大達到400,應用異常:


造成阻塞的SQL為:

DELETE FROM _1030 WHERE _1030.F05 <=  NAME_CONST('_current_date',_latin1'2016-01-17 00:30:00' COLLATE 'latin1_swedish_ci')


結合以上,有2個疑問:

該delete語句為什么會產生表鎖?

該delete語句為什么這么慢?能否優化?


(root@172.30.3.113) [(none)]> show create table S11._1030 \G

*************************** 1. row ***************************

       Table: _1030

Create Table: CREATE TABLE `_1030` (

  `F01` int(10) unsigned NOT NULL AUTO_INCREMENT,

  `F02` char(45) NOT NULL,

  `F03` datetime NOT NULL,

  `F04` int(10) unsigned DEFAULT NULL,

  `F05` datetime NOT NULL,

  `F06` varchar(40) NOT NULL,

  `F07` varchar(40) DEFAULT NULL,

  PRIMARY KEY (`F01`),

  UNIQUE KEY `F02` (`F02`) USING HASH,

  KEY `F06` (`F06`) USING HASH,

  KEY `F07` (`F07`) USING HASH

) ENGINE=MEMORY DEFAULT CHARSET=utf8

1 row in set (0.00 sec)


通過查看發現該表是heap表,heap表數據都在內存里,heap性能應該是很快的,該delete語句為什么這么慢?


在測試環境進行測試,DELETE _1030 50w的數據量需要58s,慢的不合常理。刪除該表的索引后,delete 1s內完成。這里基本確認索引維護代價太大導致。

添加btree索引,再次測試,delete 1s內完成。確認是hash索引造成。


優化方案:

  1. 把delete改為沒有where條件的全表delete或truncate(該表數據是緩存數據)。

  2. 把HASH索引改為BTREE索引。


注:由于btree索引占用的內存空間很大(經測試,btree索引占用空間是hash索引的6倍以上),數據庫主機當時內存緊張,所以優先使用方案1。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁远县| 南汇区| 曲阳县| 沐川县| 徐水县| 南宫市| 忻州市| 体育| 牟定县| 嘉义市| 山丹县| 龙口市| 嘉荫县| 海兴县| 道真| 荣昌县| 望奎县| 屯留县| 阳江市| 元氏县| 河池市| 中超| 岢岚县| 年辖:市辖区| 宿松县| 佛山市| 乌兰县| 东光县| 永吉县| 奉化市| 莱州市| 东安县| 通城县| 泸州市| 竹山县| 巴东县| 东山县| 额济纳旗| 大洼县| 汉阴县| 吉隆县|