【发布时间】:2013-01-08 15:09:28
【问题描述】:
我们的一个需求是创建一个临时内存数据库,然后执行各种插入/选择/更新。
一目了然,SQLite 满足了我们的所有需求。与内存中 SQLite DB 的连接可以很简单地建立:
class SQLiteBase < ActiveRecord::Base
self.abstract_class = true
establish_connection(adapter: 'sqlite3', database: ':memory:')
end
不久前,当我们发现需要将数据批量加载(特别是批量插入)到 SQLite 表中时,我们开始研究一些性能问题(请参阅these 基准测试)。
不幸的是,SQLite 似乎不支持批量插入。
那么是否还有其他基于 SQL 的轻量级内存数据库,支持批量插入?
如果没有——有没有办法利用重量级数据库,如 PostreSQL(MySQL 或任何其他主要参与者)作为内存数据库?
如果 postresql/mysql 不是一种可行的方法 - 是否有任何其他 C 高度优化的数据结构以及基于它的查询语言? (有/没有红宝石绑定)。
【问题讨论】:
-
在这些测试中,您是否在内存数据库中正确使用事务?
标签: ruby-on-rails sqlite query-optimization