Mysql

記憶體數據庫錯誤:表已滿

  • November 16, 2016

我在記憶體數據庫中遇到錯誤“故事已滿”。

我的數據庫大小為 4.5GB,有 300 個分區。

version_compile_machine=x86_64我在 64 位 Windows 10、16GB 記憶體上執行 MySql 5.6.17 。磁碟是 NTFS 並且有 100GB 的備用空間。

我已經設置tmp_table_sizemax_heap_table_size12GB。

這些值 ware 30 MiB 直到“table is full”錯誤,所以似乎它們被忽略(更改為 12GB 沒有幫助。)

如果它必須與此設置innodb buffer pool size有關,則也是 12GiB。

系統在 50% 的 RAM 記憶體上執行。

還有什麼辦法可以增加記憶體數據庫中允許的大小?

我正在通過 PhpMyAdmin 和tmp_table_size我的腳本進行更改。它沒有用。max_heap_table_size``SET GLOBAL ...

通過更改這些變數my.ini,重新啟動伺服器,然後將數據庫載入到記憶體中允許更大的數據庫。

“我已將 tmp_table_size 和 max_heap_table_size 設置為 12GB。” - 糟糕的!

一個具有 ORDER BY 並需要 tmp 表的查詢最多可以分配這麼多空間。10 個連接……嗯,這令人難以置信。

我建議這兩個變數的 RAM 不超過 1%(在您的情況下為 160M)。

“系統在 50% 的 RAM 記憶體上執行。” - 我會說你有一個“定時炸彈”。

“300 個分區”——如“CREATE TABLE … PARTITION BY …”?300個分區的單表效率低下;實際限制約為 50。

“memory DB”——您正在嘗試“CREATE TABLE … ENGINE=MEMORY”?並用大量數據填充它?為什麼?通常使用 ENGINE=InnoDB 就足夠了,並讓該引擎的記憶體為您提供與 MEMORY 一樣多的性能*。*

引用自:https://dba.stackexchange.com/questions/155131