Raspberry PI 3 で Python 3.5 を使用する SQLite データベースの ORM として PonyORM を使用しています (想像できる最速のデバイスではありませんが、それほど悪くはないはずです)。
挿入などの一部の操作は、非常に遅いようです。3 つの短い文字列を含むエンティティの 1 回の挿入には、4 ~ 10 秒かかる場合があります。
ここに私のdatamodel.pyファイルがあります:
from pony.orm import *
from datetime import datetime
db = Database('sqlite', 'website.db', create_db = True)
class User(db.Entity):
login = Required(str, unique=True)
password = Required(str)
actions = Set("Event")
class Event(db.Entity):
description = Optional(str)
date = Required(datetime)
ip = Required(str)
user = Optional(User)
db.generate_mapping(create_tables = True)
また、非常に単純なパフォーマンス テストも作成しました。
from datamodel import *
from datetime import *
sql_debug(True)
totalTime = datetime.now()
with db_session:
constructTime = datetime.now()
Event(date = datetime.now(),
ip = '0.0.0.0',
description = 'Sample event!')
constructTime = datetime.now() - constructTime
totalTime = datetime.now() - totalTime
print(constructTime)
print(totalTime)
そのサンプル結果:
GET NEW CONNECTION
BEGIN IMMEDIATE TRANSACTION
INSERT INTO "Event" ("description", "date", "ip", "classtype") VALUES (?, ?, ?, ?)
['Sample event!', '2016-03-08 23:05:15.066742', '0.0.0.0', 'Event']
COMMIT
RELEASE CONNECTION
0:00:00.000479
0:00:04.808138
SQL クエリ文字列はすぐに出力されるので、ここでは翻訳は問題ではないと思いますが、ご覧のとおり、操作全体に数秒かかります。
その理由は何ですか?この途方もなく長い時間を改善する方法はありますか?