sqlite大量データ挿入の最適化

912 ワード

最近のプロジェクトで1つのログシステムを実現するにはsqliteを使用し、すべてのログファイルをローカルに保存した後、クラスタ統一のログ管理センターが収集処理する必要がある.
以前はログをファイルに記録していたが、抽出が不便だったため、最後にsqliteに記録することにした.比較的大きな同時性をサポートするため、アーキテクチャおよびsqlite文の処理において比較的大きな最適化が行われているが、ここでは主に大量のデータをsqliteに記録する方法について、言語はpythonである.
ビッグデータはまずメモリキューに格納され、非同期でデータベースに書き込まれます.
書き込みの最適化は、主に次のとおりです.
            insert_data = []
            for temp in self.module[tmp]:
                temp = self._entry_init(temp)
                data = (temp.owner, temp.log_type, temp.log_mesg, temp.filename, temp.line,  temp.time, temp.host)
                insert_data.append(data)
            self.module[tmp] = []
            global_info.LOG_CONNS[tmp].insert_many(
                    "INSERT INTO services_log (owner,  type, log_msg, filename, line, time, host)\
                    values(?,?,?,?,?,?,?)" , insert_data)
            global_info.LOG_CONNS[tmp].commit()