私はこの問題を抱えています.テーブル(テーブル名は内容です)は私のプロジェクトに600万のレコードを持っています. このテーブル(中身)を分割してcakephpで使いたいのですが、やり方がわかりません。
私を助けてください。
ありがとう!
CakePHP version : 2.x
パーティショニングについて言及していますか?これは、多くの追加作業を必要としないより良いオプションです。
MySQL を使用しているため、テーブルを 2 つ (またはそれ以上) に分割し、それらからMERGE テーブルを作成できます。次に、大きなテーブルが 1 つしかないかのようにマージにアクセスできます。プログラムを変更する必要はありません。
以下は、 MySQL ドキュメントからマージ テーブルを作成する方法の例です。
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
オプション) 。