簡體   English   中英

優化表或MySQL設置以更新/內部聯接大表

[英]Optimize Table or MySQL Settings for Update/Inner-Join a large table

這與我最近發布的一個問題有關:

在MySQL中使用最小字段值和公共fieldX值標記記錄的有效方法

但其他先前有效的查詢也會發生類似錯誤,例如:

Update TableA as T1
Inner Join TableA as T2  
on T1.Field1=T2.FIeld1and T1.Field2 is not NULL
set T2.GroupFlag=T1.GroupFlag

突然之間,我得到:

錯誤1206(HY000):鎖的總數超過了鎖表的大小

我已經在同一張表上運行了好幾次,並且它起作用了,所以很明顯查詢是可以的。

我知道這個問題有點含糊,但是我不確定還有什么要問的。 我應該檢查MySQL設置中的某些內容嗎? 最近,我們確實將數據庫的備份還原到了新的服務器上,但據我所知,唯一的區別是我們將服務器的大小加倍,從而為我們提供了工作空間。

更新:

我確實發現了這一點:

https://major.io/2010/02/16/mysql-the-total-number-of-locks-exceeds-the-lock-table-size-2/

基本上說我的innodb_buffer_pool太小了。 我檢查了一下,我們的新服務器雖然更大,但從未遷移過2GB的舊設置,而我們只有128MB。

因此,我將要求SysAdmin / DevOps嘗試此操作,並報告此問題是否解決了該問題(僅刪除問題,因為可能最終會幫助其他人)。

好的,所以答案是Mysql設置。 顯然,當我們遷移服務器時,DevOps / SysAdmin確實遷移了設置,但沒有重啟服務器,因為我直接進入了查詢模式。 昨晚我們重新開始了,事情進展順利。

問題是innodb_buffer_pool默認設置為128MB,而我們的自定義設置為2GB。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM