記憶體數據庫錯誤:表已滿
我在記憶體數據庫中遇到錯誤“故事已滿”。
我的數據庫大小為 4.5GB,有 300 個分區。
version_compile_machine=x86_64
我在 64 位 Windows 10、16GB 記憶體上執行 MySql 5.6.17 。磁碟是 NTFS 並且有 100GB 的備用空間。我已經設置
tmp_table_size
為max_heap_table_size
12GB。這些值 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 一樣多的性能*。*