1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

DBのAutoincrementがとても遅い?事を知った

Last updated at Posted at 2023-04-09

DBのID用に用いるAutoincrementがとても遅い?事を知った。
もし、間違いのご指摘はwelcomeです。

当然といえば当然ですよね、AutoIncrementするためには、既存の最後の番号、重複しない番号を算出しないといけないので、その手間がかかりますよね。

とはいえ、こんなに時間要するとは知りませんでした。

AutoIncrement使用のテーブル構造

id: Integer, AutoIncrement,PrimaryKey
id2: ShortInt, Unique=True
json: BOB

AutoIncrement非使用のテーブル構造

id2: ShortInt,PrimaryKey -- 上記のid列を除去してもid2だけでUnique.
json: BOB

Tableを生成し、約5000件の初期値レコードをコミットしたのにかかる時間は次の通りでした。

AutoIncrement未使用: 生成/初期化に要した時間:1.41sec
AutoIncrement使用: 生成/初期化に要した時間:44.18sec

【環境】

  • クライアント: MacStudio(初期) +PycharmPro2023.1
  • サーバ: MacMini2012(Ubuntu20) + MySQL8
  • Python3.11+SqlAlchemy2.?

レコードの増減がなければLoad時刻はほぼ一緒でしたので考慮不要そうですが、レコードの増減が激しいTableは要検討した方がよさそう。

今まで教科書どおりにid列を設けてましたが、今後は配慮します。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?