Mysql
NDB 引擎中的最大 DATAFILE 大小
我的數據庫設置在 CentOS 上使用具有 2-3 個節點的 NDB 集群。在嘗試測試性能時,我嘗試將大約 700 萬條記錄(大約 2GB 大小)儲存到其中一張表中。在大約 200k 時,它失敗並發出通知:
ERROR 1114 (HY000): The table 'my_request' is full
這些是 LOGFILE GROUP 和 TABLESPACE:
CREATE LOGFILE GROUP lg_1 ADD UNDOFILE 'undo_1.log' ENGINE NDBCLUSTER; ALTER LOGFILE GROUP lg_1 ADD UNDOFILE 'undo_2.log' ENGINE NDBCLUSTER; CREATE TABLESPACE ts_1 ADD DATAFILE 'data_1.dat' USE LOGFILE GROUP lg_1 ENGINE NDBCLUSTER; ALTER TABLESPACE ts_1 ADD DATAFILE 'data_2.dat' ENGINE NDBCLUSTER;
懷疑問題出在 DATAFILE 中,我在其中又添加了 2 個:
data_3.dat
anddata_4.dat
,這解決了問題。所以根據這個頁面,在我目前的版本中被忽略了
AUTOEXTEND_SIZE
。MAX_SIZE
該表預計將保存 700GB 以上的數據,然後在預定時間後轉儲到磁碟中。因此,有沒有辦法設置這個 DATADISK 的大小來計算它的未來使用量?這些數據儲存在哪裡?(我試圖簽入datadir
, execfind
,但一無所獲)。如果您能分享一些解釋如何與 NDB 合作的好資訊/策略,將不勝感激。注意:不是新開發銀行的專家,請假設我在解釋時一無所知。大泰。
要獲取撤消/數據文件大小:
SELECT TABLESPACE_NAME, LOGFILE_GROUP_NAME, FILE_NAME, FILE_TYPE, EXTRA, INITIAL_SIZE/1000000 size_init_mb, MAXIMUM_SIZE/1000000 size_max_mb, TOTAL_EXTENTS - FREE_EXTENTS AS extents_used, (TOTAL_EXTENTS - FREE_EXTENTS) * EXTENT_SIZE/1000000 AS mb_used, FREE_EXTENTS * EXTENT_SIZE/1000000 AS mb_free FROM INFORMATION_SCHEMA.FILES WHERE EXTRA IS NOT NULL;
要更改數據文件的 MAX_SIZE,只需設置 INITIAL_SIZE
ALTER TABLESPACE ts_1 ADD DATAFILE 'data_4.dat' INITIAL_SIZE 1G ENGINE=NDBCLUSTER;
即使文件指出可以通過檢查配置中的 datadir 來定位該數據文件,但不知何故我無法在我的系統中找到它(預設情況下它位於 /var/lib/mysql/)。