Mysql 數(shù)據(jù)庫

Mysql邏輯分層:自上而下(連接層_——服服務(wù)層——引擎層——存儲層)


存儲引擎;



Innodb:事務(wù)優(yōu)先(適合高并發(fā)操作)

Myisam:性能優(yōu)先(表鎖)

查詢數(shù)據(jù)庫引擎:

支持哪些引擎?show engines;

查看當(dāng)前使用的引擎?show variables like '%storage_engine%';


其他優(yōu)化方法;

exists / in

select * from table where exists / in (子查詢);

如果主查詢的數(shù)據(jù)量大,則用In

如果子查詢的數(shù)據(jù)量大,則用exist??? (exists 語法:將主查詢的結(jié)果放到子查詢結(jié)果中進(jìn)行條件校驗(看子查詢是否有數(shù)據(jù),如果有數(shù)據(jù),則校驗成功,)


慢查詢?nèi)罩荆海睿?/p>

show variables like '%slow_query_log%';

臨時開啟——在內(nèi)存中開啟:set global slow_query_log = 1;

永久開啟:/etc/my.cnf 中追加配置:vi / etc / my.cnf

重啟Mysql服務(wù):service mysql restart;


slow_query_log =1

slow_query_log_file=/var / lib /mysql / localhost-slow.log

慢查詢閾值默認(rèn)10秒命令;show variables like 'long_query_time';

臨時設(shè)置閾值:set global long_query_time =5;? ———設(shè)置完成后,重新登陸起效。(不需要重啟服務(wù))

永久設(shè)置閾值:/etc/my.cnf 中追加配置:設(shè)置完成后需要重啟服務(wù)

????????????????????????? vi / etc / my.cnf

???????????????????????? long_query_time=20



show global status like 'slow_queries%';?? ——超過閾值的SQL

通過mysqldumpslow工具查看慢SQL,可以通過一些過濾條件進(jìn)行快速查出需要定位的慢SQL


-- 獲取返回記錄最多的3個SQL:

?????????????????????????????? mysqldumpslow -s r -t? 3 /var / lib /mysql / localhost-slow.log

--獲取訪問次數(shù)最多的3個SQL:

????????????????????????????? mysqldumpslow -s c -t? 3 /var / lib /mysql / localhost-slow.log

-- 獲取按照時間排序,前10條包含Left Join 查詢語句的SQL:

???????????????????????????? mysqldumpslow -s t -t? 10 -g "left loin" /var / lib /mysql / localhost-slow.log

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容