THINKPHP の addAll、thinkphpaddall でサポートされる最大データ量の簡単な分析
Thinkphpのモデル操作にはadd()とaddAllの2つのメソッドがあります
コードをコピーします コードは次のとおりです:
$User = M("User") // ユーザーオブジェクトをインスタンス化します
;
$data['name'] = 'ThinkPHP';
$data['email'] = 'ThinkPHP@gmail.com';
$User->add($data);
$dataList[] = array('name'=>'thinkphp','email'=>'thinkphp@gamil.com');
$dataList[] = array('name'=>'onethink','email'=>'onethink@gamil.com');
$User->addAll($dataList);
addAll メソッドはデータをバッチで追加できます。これが MySQL の使用方法です。
コードをコピーします コードは次のとおりです:
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
大量のデータがある場合は、項目を 1 つずつループで挿入するのではなく、バッチで挿入するようにしてください。そうしないと、データベースが負荷を感じてハングアップします。
しかし、それを当然のこととして考え、すべてのデータを配列に保存して addAll を実行すると、ハングアップという状況に直面することになります。これはなぜでしょうか。
その理由は、mysql の max_allowed_packet 変数の設定により、アップロード SQL ステートメントの長さが制限されるためです。mysql 設定で長くなるように設定するだけです。
max_allowed_packet = 100M
同時に、データを挿入するときに、バッチ挿入の長さ制限も設定します。結局のところ、データがいつ数百万になるかはわかりません。
この記事の内容は以上です。気に入っていただければ幸いです。
http://www.bkjia.com/PHPjc/953156.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/953156.html技術記事 THINKPHP の addAll、thinkphpaddall でサポートされるデータの最大量の簡単な分析 Thinkphp には、add() と addAll という 2 つのメソッドがあります。次のようにコードをコピーします。 $User = M("User");う...