我有這個問題,一個表(表名是內容)在我的項目中有600萬條記錄。 我想拆分這個表(內容)並在cakephp中使用,但我不知道該怎麼做。如何拆分mysql表使用CakePHP 2.x
請幫幫我。
謝謝!
CakePHP version : 2.x
我有這個問題,一個表(表名是內容)在我的項目中有600萬條記錄。 我想拆分這個表(內容)並在cakephp中使用,但我不知道該怎麼做。如何拆分mysql表使用CakePHP 2.x
請幫幫我。
謝謝!
CakePHP version : 2.x
指的是Partitioning?這可能是一個更好的選擇,無需額外的大量工作。
你是對的,但是mysql似乎並沒有Didn'似乎分區。分區是Oracle的概念。 – daiguachen
MySQL處理從v5.1轉發的分區。所以,如果你使用5.1或更高版本,那麼你很好。看看我的答案中的鏈接。點擊分區。 –
謝謝你的幫助! – daiguachen
既然你使用MySQL,你可以在兩個(或更多)拆表,並創建他們MERGE table。然後,您可以像訪問一個大表一樣訪問合併。您的程序無需更改。
這裏有一個如何從MySQL documentation創建一個合併表的例子:
mysql> CREATE TABLE t1 (
-> a INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> message CHAR(20)) ENGINE=MyISAM;
mysql> CREATE TABLE t2 (
-> a INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> message CHAR(20)) ENGINE=MyISAM;
mysql> INSERT INTO t1 (message) VALUES ('Testing'),('table'),('t1');
mysql> INSERT INTO t2 (message) VALUES ('Testing'),('table'),('t2');
mysql> CREATE TABLE total (
-> a INT NOT NULL AUTO_INCREMENT,
-> message CHAR(20), INDEX(a))
-> ENGINE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST;
使用合併表的最佳方法取決於您的具體情況。如果您必須拆分大表,因爲它已經太大了,您可以創建其他具有相同結構的表(create mySmallTable1 like myBigTable
),然後將部分數據移動到每個表中(insert into mySmallTable1 select * from myBigTable where ...
)。顯然這需要一些時間,因爲MySQL必須將記錄從一個文件複製到另一個文件。然後放下大表並重新創建它作爲小表的合併。
如果大表正常,但不想插入新記錄,則可以執行其他操作:創建一個與大表結構相同的新表。定義新表和新表的合併,以便新插入新表(INSERT_METHOD
選項)
您有兩張具有相同結構MERGE的表格。但我有一張大桌子(5G)。現在,我是否需要拆分大表並將其導入結構一致表(有很多)?然後合併他們? – daiguachen
我找不到答案,所以我更新了答案,而不是 – Joni
非常感謝你!〜Chuck Burgess是對的我應該看到Mysql的手冊 – daiguachen
你使用哪個數據庫,mysql? – Joni
是的,我使用mysql_5.how來做到這一點? – daiguachen
爲什麼你想拆分表格?您可以使用'phpmyadmin'來執行導出,並將內容導入另一個表格(具有相同的結構)。 – noslone