亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

一次生產(chǎn)核心表Optimize table的操作經(jīng)歷

IT那活兒 / 4436人閱讀
一次生產(chǎn)核心表Optimize table的操作經(jīng)歷


前  言 
 
系統(tǒng)運行了一年多,有幾張表特別大。前期經(jīng)過了一些測試,發(fā)現(xiàn)使用Optimize Table命令能夠回收空間,而且能夠在線操作,于是決定在晚上找閑時操作一下。


前期測試


在前期我們對這個操作進行了詳盡的測試。包括回收的方式,回收的速度,以及是否產(chǎn)生鎖等情況。我們測試的方法是找到一張表,循環(huán)刪除若干條記錄,然后進行回收,在回收期間執(zhí)行了一個循環(huán)更新的腳本,觀察更新過程中是否出現(xiàn)鎖的情況。
而我們基于測試的結(jié)果得出的結(jié)論如下:
  • 通過測試發(fā)現(xiàn)對大表進行Optimize Table不會阻塞DML語句,它只會在文件發(fā)生切換的時候短暫鎖表。

  • 表上索引很多的情況,執(zhí)行Optimize Table會很慢,建議評估表空間回收后的大小,如果回收之后表變得較小,建議刪除索引之后進行操作。通過測試刪除索引后速度能快一倍。

  • 在執(zhí)行optimizer table的時候,從庫會一直延遲,直到主庫完成操作,從庫才會開始操作optimizer table。


正式操作


到了正式操作的時候,我們按照測試的結(jié)果進行執(zhí)行。前期都較為順利。大概在操作了1個小時之后,突然出現(xiàn)監(jiān)控連接數(shù)告警。

可以看到當(dāng)前我們設(shè)置最大的Thread數(shù)量為3000。結(jié)果瞬間達到了最大值。

通過命令行進入到數(shù)據(jù)庫。發(fā)現(xiàn)大量的查詢語句在等待Waiting for table metadata lock。

這些查詢語句也都在查詢我們操作Optimize Table的表。沒有任何辦法數(shù)據(jù)庫就這樣全局hang死了。不停的有連接上來執(zhí)行查詢操作,就要等待這個Waiting for table metadata lock。只能把源頭Optimize Table停掉。在停掉了之后,系統(tǒng)立馬恢復(fù)了正常。


問題回溯


在這次操作的過程中,其實前期也有完整的測試,但是還是出現(xiàn)了這樣的情況,一個很大的原因是我們沒辦法模擬生產(chǎn)的負載情況。

應(yīng)用程序還有一個特點,一旦堵塞了住了,就會不停的連接,這樣的程序其實就是一個瘋狂壓測程序。

所以做這樣的測試,需要我們思考到一點:

我們需要捕捉到生產(chǎn)的流量,然后在測試的時候進行回放重演。

那么怎么進行流量的捕捉,一個簡單的方法就是使用tcpdump捕捉3306端口的信息。然后使用解析出數(shù)據(jù),進行重演。此類方案比較多,比較令人熟悉的是tcpcopy這個解決方案。


問題解決


那么最終的一個解決辦法就是,我們可以先在從庫上進行操作。這里的操作需要加上sql_log_bin = 0不記錄binlog日志。等從庫回收之后,再找個機會進行主從切換。


END


更多精彩干貨分享

點擊下方名片關(guān)注

IT那活兒

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/129909.html

相關(guān)文章

  • 一次 Laravel 應(yīng)用性能調(diào)優(yōu)經(jīng)歷

    摘要:為了一探究竟,于是開啟了這次應(yīng)用性能調(diào)優(yōu)之旅。使用即時編譯器和都能輕輕松松的讓你的應(yīng)用程序在不用做任何修改的情況下,直接提高或者更高的性能。 這是一份事后的總結(jié)。在經(jīng)歷了調(diào)優(yōu)過程踩的很多坑之后,我們最終完善并實施了初步的性能測試方案,通過真實的測試數(shù)據(jù)歸納出了 Laravel 開發(fā)過程中的一些實踐技巧。 0x00 源起 最近有同事反饋 Laravel 寫的應(yīng)用程序響應(yīng)有點慢、20幾個并...

    warkiz 評論0 收藏0
  • laravel artisan

    摘要:用法顯示當(dāng)前的幫助信息不輸出任何信息顯示當(dāng)前版本強制輸出禁用輸出不進行交互運行環(huán)境詳細輸出普通更加詳細可用命令全局命令清除編譯生成的文件,相當(dāng)于的反操作將站點設(shè)為維護狀態(tài)顯示當(dāng)前運行環(huán)境來源于 laravel artisan 用法 $ php artisan Laravel Framework version 5.1.46 (LTS) Usage: command [options] ...

    Betta 評論0 收藏0
  • MySQL數(shù)據(jù)庫優(yōu)化

    摘要:具體來說,就是在寫數(shù)據(jù)庫的時候同時寫一份數(shù)據(jù)到緩存集群里,然后用緩存集群來承載大部分的讀請求。各種精妙的架構(gòu)設(shè)計因此一篇小文頂多具有拋磚引玉的效果但是數(shù)據(jù)庫優(yōu)化的思想差不多就這些了 前言 數(shù)據(jù)庫優(yōu)化一方面是找出系統(tǒng)的瓶頸,提高MySQL數(shù)據(jù)庫的整體性能,而另一方面需要合理的結(jié)構(gòu)設(shè)計和參數(shù)調(diào)整,以提高用戶的相應(yīng)速度,同時還要盡可能的節(jié)約系統(tǒng)資源,以便讓系統(tǒng)提供更大的負荷. 1. 優(yōu)化一覽...

    wangshijun 評論0 收藏0

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<