国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

高性能MySQL讀書筆記 找出誰持有鎖

2024-07-24 12:44:37
字體:
供稿:網(wǎng)友
問題的背景:在實(shí)際使用MySQL時,如果訪問量比較大,那么很可能會出現(xiàn)大量Locked狀態(tài)的進(jìn)程,但是卻不能方便的識別是哪條SQL引起的問題,很多人遇到此類問題時,多半是通過PhpMyAdmin查詢可疑SQL,然后KILL掉,但問題是可疑SQL可能會很多,這樣逐一嘗試太過笨拙,有的人一怒之下很可能會重啟MySQL,但如此治標(biāo)不治本的方法肯定更不可取。

開始實(shí)驗(yàn),在test數(shù)據(jù)庫先建立一個測試表foo(注意:是MyISAM表類型),添加若干數(shù)據(jù):
復(fù)制代碼 代碼如下:

CREATE TABLE IF NOT EXISTS `foo` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`str` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM;

INSERT INTO `foo` (`id`, `str`) VALUES
(1, 'a'),
(2, 'b');

打開一個MySQL命令行終端:

mysql> USE test;
mysql> SELECT SLEEP(12345) FROM foo;

再打開一個MySQL命令行終端:
復(fù)制代碼 代碼如下:

mysql> USE test;
mysql> UPDATE foo SET str='bar';

此時執(zhí)行SHOW PROCESSLIST,可以看到已經(jīng)出現(xiàn)Locked現(xiàn)象了:

10 User sleep SELECT sleep(12345) FROM foo
20 Locked UPDATE foo SET str = 'bar'

當(dāng)然,我們知道是SLEEP堵塞了UPDATE,但如果不是這個實(shí)驗(yàn),面對同樣的情況,比如說幾百個SQL查詢同時映入眼簾,我們?nèi)绾蝸砼袛嗄兀看藭r沒人能打包票,只能瞎蒙了,經(jīng)驗(yàn)有時候很重要,但我們還需要明確的命令,在這里就是:

mysqladmin debug

注意:如何你沒有設(shè)定“.my.cnf”配置文件的話,可能需要輸入用戶名和密碼參數(shù)

命令執(zhí)行后,不會有任何明確的輸出,不要著急,有價值的東西此時已經(jīng)被保存到了錯誤日志里:

mysql> SHOW VARIABLES LIKE 'log_error';

找到錯誤日志的具體路徑后,打開,查看日志的最后部分:

10 test.foo Locked - read Low priority read lock
20 test.foo Waiting - write High priority write lock

如此,我們就能看到id是10的SQL堵塞了id是20的SQL,至于具體的SQL,到SHOW PROCESSLIST里對照一下就能看到了。

您可能感興趣的文章:

php 高性能書寫
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 拜泉县| 孟村| 五大连池市| 邵东县| 宁德市| 文水县| 晴隆县| 马鞍山市| 安义县| 甘德县| 衡水市| 钟山县| 马山县| 汕尾市| 道真| 大理市| 青海省| SHOW| 龙海市| 富蕴县| 壤塘县| 长海县| 丰都县| 兴城市| 望江县| 昭通市| 威宁| 瓮安县| 思茅市| 龙里县| 丹寨县| 孟津县| 富阳市| 平陆县| 黄大仙区| 宣威市| 商都县| 南部县| 宁陕县| 南投县| 吉木萨尔县|