0

複数のクエリを実行するよりも、1つのクエリで複数の挿入を使用する方がよいことは誰もが知っています。しかし、Mysqlがサポートするこれらの複数の拡張値の数はわかりませんか?ネットで検索しましたが、正解が見つかりませんでした。私はこれを知りたいだけです。

例、

INSERT INTO tbl_name VALUES(1, 'John Doe'), (2, 'Peter England'), ....

1つのクエリで数百/数千の挿入を実行しようとしたMVCフレームワークを使用していたとき、のようなエラーメッセージが表示されていたのを覚えていますMysql server has gone away

4

2 に答える 2

1

クエリの最終的な長さの制限は、max_allowed_pa​​cket設定によって設定されます。これを超えると、クエリは切り捨てられ、ほぼ確実に無効になります。

複数値の挿入を行う方が効率的ですが、やりすぎて何千もの値セットを実行しようとしないでください。分割して、最大で数百を実行するようにし、クエリ文字列の長さがmax_allowed_pa​​cketに近づかないようにしてください。

于 2012-08-10T20:38:28.047 に答える
1

あなたが話しているような複数の挿入の制限は、パケット制限によって制限されます。

参照:http ://dev.mysql.com/doc/refman/5.1/en/packet-too-large.html

これは、挿入だけでなく、すべてのクエリタイプに影響します。

もう少しコンテキストを追加すると、MySQLサーバーについて話したエラーがなくなったのは、パケット制限を超えた結果である可能性があります。ページからの引用:

正しくない、または大きすぎるクエリをサーバーに送信した場合にも、これらのエラーが発生する可能性があります。mysqldが大きすぎるか故障しているパケットを受信した場合、mysqldはクライアントに問題が発生したと見なし、接続を閉じます。大きなクエリが必要な場合(たとえば、大きなBLOB列を操作している場合)、サーバーのmax_allowed_pa​​cket変数(デフォルト値は1MB )を設定することで、クエリの制限を増やすことができます。また、クライアント側で最大パケットサイズを増やす必要がある場合もあります。パケットサイズの設定の詳細については、セクションC.5.2.10「パケットが大きすぎます」を参照してください。

于 2012-08-10T20:38:37.437 に答える