可以通過查看mysql進(jìn)程來實(shí)現(xiàn)。 進(jìn)入mysql命令行客戶端,選擇數(shù)據(jù)庫后,執(zhí)行show processlist命令: 多刷新幾次,可以看到最后執(zhí)行的SQL語句,以此判斷什么查詢在占用資源。 望采納!
創(chuàng)新互聯(lián)建站主要業(yè)務(wù)有網(wǎng)站營銷策劃、成都網(wǎng)站設(shè)計、做網(wǎng)站、微信公眾號開發(fā)、成都微信小程序、H5場景定制、程序開發(fā)等業(yè)務(wù)。一次合作終身朋友,是我們奉行的宗旨;我們不僅僅把客戶當(dāng)客戶,還把客戶視為我們的合作伙伴,在開展業(yè)務(wù)的過程中,公司還積累了豐富的行業(yè)經(jīng)驗(yàn)、成都全網(wǎng)營銷推廣資源和合作伙伴關(guān)系資源,并逐漸建立起規(guī)范的客戶服務(wù)和保障體系。
程序存儲器是用于存放是系統(tǒng)工作的應(yīng)用程序及一些不需改變的數(shù)據(jù)常數(shù)的,程序?qū)懭氤绦虼鎯ζ骱?,單片機(jī)系統(tǒng)只能讀取程序指令使系統(tǒng)運(yùn)行,而不能再進(jìn)行改寫,且系統(tǒng)掉電后,程序不會丟失。因此,程序存儲器是rom(read
only
memory),即只讀存儲器。
數(shù)據(jù)存儲器是用于存放程序運(yùn)行的中間處理數(shù)據(jù)的,可隨程序運(yùn)行而隨時寫入或讀出數(shù)據(jù)存儲器的內(nèi)容,當(dāng)系統(tǒng)掉電時,數(shù)據(jù)全部會丟失。因此,數(shù)據(jù)存儲器是ram(random
accese
memory),即可隨機(jī)讀寫的存儲器。
在對MySQL 8.0.26 vs GreatSQL 8.0.25的對比測試過程中,有一個環(huán)節(jié)是人為制造磁盤滿的場景,看看MGR是否還能正常響應(yīng)請求。
在實(shí)測過程中,最后發(fā)現(xiàn)磁盤滿的那個節(jié)點(diǎn),持續(xù)時間足夠久后,會因?yàn)閮?nèi)存消耗過大而最終被OS給OOM Kill。
這個問題我已報告BUG(#104979),下面是該過程的詳細(xì)記錄。
首先,直接利用dd復(fù)制空文件填滿磁盤。
disk full報告過程及何時被oom killed
來看下MySQL 8.0.26遇到disk full時日志都輸出哪些內(nèi)容:
從disk full時刻開始,大約過了2.5小時,mysqld進(jìn)程內(nèi)存消耗持續(xù)上升,最終引發(fā)oom kill
在這期間某個時刻抓到的待認(rèn)證事務(wù)堆積,在被oom kill前實(shí)際不止這么多:
關(guān)注mysqld進(jìn)程內(nèi)存消耗變化
下面是mysqld進(jìn)程內(nèi)存消耗變化情況
OS層oom-killer相關(guān)日志:
GreatSQL 8.0.25測試過程
作為對比,我用GreatSQL 8.0.25也做了同樣的測試。
從日志詳情中可以看到,當(dāng)磁盤空間滿了之后,GreatSQL會將那個節(jié)點(diǎn)主動退出集群,對整個集群的影響非常小。
此外,從集群退出后,也不會再接收認(rèn)證事務(wù)了,所以也沒發(fā)生內(nèi)存持續(xù)暴漲最終被oom killed的情況,實(shí)際觀察過程中發(fā)現(xiàn)內(nèi)存反倒還下降了
這樣對比來看,GreatSQL的可靠性還真是可以的,官方的MySQL MGR的可靠性還有待進(jìn)一步加強(qiáng)呀。
Enjoy GreatSQL :)
當(dāng)MySQL檢測到磁盤空間滿了,它會:
每分鐘:檢查空間是否得到釋放,以便寫入新數(shù)據(jù)。當(dāng)發(fā)現(xiàn)有剩余空間了,就會繼續(xù)寫入數(shù)據(jù),一切照舊。
每十分鐘:如果還是發(fā)現(xiàn)沒剩余空間,則會在日志中寫入一條記錄,報告磁盤空間滿(這時候只寫入幾個字節(jié)還是夠的)。
個例外的情況是:
當(dāng)執(zhí)行 REPAIR TABLE 或者 OPTIMIZE TABLE 操作時,或者執(zhí)行完 LOAD DATA INFILE 或 ALTER TABLE 之后批量更新索引時,這些操作會創(chuàng)建臨時文件,當(dāng)執(zhí)行這些操作過程中mysqld發(fā)現(xiàn)磁盤空間滿了,就會把這個涉及到的表標(biāo)記為crashed,刪掉臨時文件(除了 ALTER TABLE 操作,MySQL會放棄正在執(zhí)行的操作,刪除臨時文件,釋放磁盤空間)。
備注:當(dāng)執(zhí)行這些命令過程中mysqld進(jìn)程被意外被殺掉的話,其所生成臨時文件不會自動刪除,需要手工刪掉才能釋放磁盤空間。
可以設(shè)置自動覆蓋
解決方案[1]
找到sql server 2019 的安裝目錄,如:X:\Microsoft Sql Server。其中,X:\是根目錄。
在sql server 2019 的安裝目錄X:\Microsoft Sql Server下,找到路徑:
MSSQL15.MSSQLSERVER\Log\PolyBase\dump
刪除除.log文件外的所有文件。
這些文件是PolyBase 相關(guān)服務(wù)產(chǎn)生的日志,單個將近500MB。
停止PolyBase 相關(guān)服務(wù)
1.PolyBase用于Sql Server 與外部數(shù)據(jù)源的通信 。所以,不做分布式開發(fā),不需要啟動PolyBase相關(guān)服務(wù)。
2. Sql Server 服務(wù)是Sql Server Polybase 數(shù)據(jù)移動服務(wù)(用于管理 SQL Server 和外部數(shù)據(jù)源之間的通信和數(shù)據(jù)傳輸) 和Sql Server Polybase 引擎服務(wù)(用于創(chuàng)建、協(xié)調(diào)和執(zhí)行針對外部數(shù)據(jù)源的并行查詢計劃)的依賴項(xiàng),這兩個服務(wù)不停止,Sql Server服務(wù)將無法停止。
3. Sql Server Polybase 數(shù)據(jù)移動服務(wù) 和Sql Server Polybase 引擎服務(wù)如果設(shè)為自動,則運(yùn)行后,將無法通過手動停止。
4. 如果要阻止PolyBase 服務(wù)寫入日志,應(yīng)當(dāng)停止Sql Server Polybase 數(shù)據(jù)移動服務(wù) 和Sql Server Polybase 引擎服務(wù).
5. 如果Sql Server Polybase 數(shù)據(jù)移動服務(wù) 和Sql Server Polybase 引擎服務(wù)已設(shè)為自動,則應(yīng)先分別將其屬性設(shè)為手動,然后重啟計算機(jī)。
6. 在安裝Sql Server時,應(yīng)當(dāng)首先將Sql Server Polybase 數(shù)據(jù)移動服務(wù) 和Sql Server Polybase 引擎服務(wù)的屬性設(shè)為手動。
7. 如果在安裝Sql Server時,首先將Sql Server Polybase 數(shù)據(jù)移動服務(wù) 和Sql Server Polybase 引擎服務(wù)的屬性默認(rèn)為自動,則由于無法停止Sql Server服務(wù),將導(dǎo)致后續(xù)組件如R等無法安裝。
8. 如果出現(xiàn)上述相關(guān)組件無法安裝的問題,首先要將Sql Server Polybase 數(shù)據(jù)移動服務(wù) 和Sql Server Polybase 引擎服務(wù)的屬性設(shè)為手動,重啟計算機(jī)后,通過安裝程序進(jìn)行修復(fù)安裝。
如需長時間運(yùn)行PolyBase相關(guān)服務(wù)
在安裝Sql Server前,最好專門為日志文件預(yù)留單獨(dú)的分區(qū)。安裝時,仔細(xì)閱讀安裝向?qū)У奶崾?,為日志文件指定單?dú)的存儲分區(qū)。這樣,日志寫滿后,將自行覆蓋,而不必?fù)?dān)心影響應(yīng)用程序運(yùn)行的效率和性能。