通過(guò)測(cè)試發(fā)現(xiàn)對(duì)大表進(jìn)行Optimize Table不會(huì)阻塞DML語(yǔ)句,它只會(huì)在文件發(fā)生切換的時(shí)候短暫鎖表。
表上索引很多的情況,執(zhí)行Optimize Table會(huì)很慢,建議評(píng)估表空間回收后的大小,如果回收之后表變得較小,建議刪除索引之后進(jìn)行操作。通過(guò)測(cè)試刪除索引后速度能快一倍。
在執(zhí)行optimizer table的時(shí)候,從庫(kù)會(huì)一直延遲,直到主庫(kù)完成操作,從庫(kù)才會(huì)開(kāi)始操作optimizer table。
到了正式操作的時(shí)候,我們按照測(cè)試的結(jié)果進(jìn)行執(zhí)行。前期都較為順利。大概在操作了1個(gè)小時(shí)之后,突然出現(xiàn)監(jiān)控連接數(shù)告警。
可以看到當(dāng)前我們?cè)O(shè)置最大的Thread數(shù)量為3000。結(jié)果瞬間達(dá)到了最大值。
通過(guò)命令行進(jìn)入到數(shù)據(jù)庫(kù)。發(fā)現(xiàn)大量的查詢(xún)語(yǔ)句在等待Waiting for table metadata lock。
這些查詢(xún)語(yǔ)句也都在查詢(xún)我們操作Optimize Table的表。沒(méi)有任何辦法數(shù)據(jù)庫(kù)就這樣全局hang死了。不停的有連接上來(lái)執(zhí)行查詢(xún)操作,就要等待這個(gè)Waiting for table metadata lock。只能把源頭Optimize Table停掉。在停掉了之后,系統(tǒng)立馬恢復(fù)了正常。
在這次操作的過(guò)程中,其實(shí)前期也有完整的測(cè)試,但是還是出現(xiàn)了這樣的情況,一個(gè)很大的原因是我們沒(méi)辦法模擬生產(chǎn)的負(fù)載情況。
應(yīng)用程序還有一個(gè)特點(diǎn),一旦堵塞了住了,就會(huì)不停的連接,這樣的程序其實(shí)就是一個(gè)瘋狂壓測(cè)程序。
所以做這樣的測(cè)試,需要我們思考到一點(diǎn):
我們需要捕捉到生產(chǎn)的流量,然后在測(cè)試的時(shí)候進(jìn)行回放重演。
那么怎么進(jìn)行流量的捕捉,一個(gè)簡(jiǎn)單的方法就是使用tcpdump捕捉3306端口的信息。然后使用解析出數(shù)據(jù),進(jìn)行重演。此類(lèi)方案比較多,比較令人熟悉的是tcpcopy這個(gè)解決方案。
那么最終的一個(gè)解決辦法就是,我們可以先在從庫(kù)上進(jìn)行操作。這里的操作需要加上sql_log_bin = 0不記錄binlog日志。等從庫(kù)回收之后,再找個(gè)機(jī)會(huì)進(jìn)行主從切換。
更多精彩干貨分享
點(diǎn)擊下方名片關(guān)注
IT那活兒
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/129909.html
摘要:為了一探究竟,于是開(kāi)啟了這次應(yīng)用性能調(diào)優(yōu)之旅。使用即時(shí)編譯器和都能輕輕松松的讓你的應(yīng)用程序在不用做任何修改的情況下,直接提高或者更高的性能。 這是一份事后的總結(jié)。在經(jīng)歷了調(diào)優(yōu)過(guò)程踩的很多坑之后,我們最終完善并實(shí)施了初步的性能測(cè)試方案,通過(guò)真實(shí)的測(cè)試數(shù)據(jù)歸納出了 Laravel 開(kāi)發(fā)過(guò)程中的一些實(shí)踐技巧。 0x00 源起 最近有同事反饋 Laravel 寫(xiě)的應(yīng)用程序響應(yīng)有點(diǎn)慢、20幾個(gè)并...
摘要:用法顯示當(dāng)前的幫助信息不輸出任何信息顯示當(dāng)前版本強(qiáng)制輸出禁用輸出不進(jìn)行交互運(yùn)行環(huán)境詳細(xì)輸出普通更加詳細(xì)可用命令全局命令清除編譯生成的文件,相當(dāng)于的反操作將站點(diǎn)設(shè)為維護(hù)狀態(tài)顯示當(dāng)前運(yùn)行環(huán)境來(lái)源于 laravel artisan 用法 $ php artisan Laravel Framework version 5.1.46 (LTS) Usage: command [options] ...
摘要:具體來(lái)說(shuō),就是在寫(xiě)數(shù)據(jù)庫(kù)的時(shí)候同時(shí)寫(xiě)一份數(shù)據(jù)到緩存集群里,然后用緩存集群來(lái)承載大部分的讀請(qǐng)求。各種精妙的架構(gòu)設(shè)計(jì)因此一篇小文頂多具有拋磚引玉的效果但是數(shù)據(jù)庫(kù)優(yōu)化的思想差不多就這些了 前言 數(shù)據(jù)庫(kù)優(yōu)化一方面是找出系統(tǒng)的瓶頸,提高M(jìn)ySQL數(shù)據(jù)庫(kù)的整體性能,而另一方面需要合理的結(jié)構(gòu)設(shè)計(jì)和參數(shù)調(diào)整,以提高用戶的相應(yīng)速度,同時(shí)還要盡可能的節(jié)約系統(tǒng)資源,以便讓系統(tǒng)提供更大的負(fù)荷. 1. 優(yōu)化一覽...
閱讀 1362·2023-01-11 13:20
閱讀 1710·2023-01-11 13:20
閱讀 1216·2023-01-11 13:20
閱讀 1913·2023-01-11 13:20
閱讀 4168·2023-01-11 13:20
閱讀 2764·2023-01-11 13:20
閱讀 1404·2023-01-11 13:20
閱讀 3676·2023-01-11 13:20