私のmysqlの挿入が非常に遅いことがわかりました。テストし、実証するために、私は次の表を使用:非常に遅いInnodbの挿入:空のテーブルの1Kエントリのために65秒。
+----------+-----------------------------------------------+
| Table | Create Table |
+----------+-----------------------------------------------+
| ik_b64_8 | CREATE TABLE `incr_tbl` (
`cnt` int(11) NOT NULL,
PRIMARY KEY (`cnt`)
) ENGINE=InnoDB DEFAULT CHARSET=ascii COLLATE=ascii_bin |
+----------+-----------------------------------------------+
とPythonコード:私は空のテーブルの上に、この挿入のみのコードを実行すると
def profile_basic(cnt):
db = database.Connection("localhost","testing_delme","root", "")
t1 = time.time()
for ii in range(cnt):
db.execute("INSERT INTO testing_delme.incr_tbl VALUES (%s)", ii)
print time.time() - t1
、それは1Kの挿入のために65秒を消費します。私はinnodb_flush_log_at_trx_commit = 1を持っています。テーブルがデータを失うことができないので、私はそれを必要とします。私の質問は、このセットでは、インサートがとても遅くなることですか?あるいは何か他のものが欠けていますか?
すべてを1つのステートメントで挿入しようとしましたか? – jeremyharris
開始トランザクション。 foo(c1)の値(v1)、(v2)、(v3)に挿入します。コミット; –
私は実際のテーブルのようにトランザクションを試していません(上のデモンストレーションのみです)。一度に1エントリしか挿入できません。それはWebサーバーの背後にあり、ユーザー登録を取得します。したがって、それは助けにならないでしょう。しかし、それが何か手がかりを与えるなら、私はこのテーブルでそれを試してみることができます。 – Ethan