2012-07-31 130 views
1

我最近开始使用InfinDB,到目前为止它运行良好。我使用cipimport工具进行批量加载,并在几秒钟内插入数百万行。但是,在某些情况下,我需要插入数千行,并且由于数据生成的性质,使用insert语句在程序上更合理。但是,当我尝试这样做时,插入速度似乎很慢。它每秒插入大约30行(每行非常小......每行大约5列,每种类型varchar(10))。我是否错误地配置和/或安装了某些东西,或者是否使用插入语句预期的速度?我的电脑有一个16 GB的RAM,带有520 mb/s写入速度的SSD,使用MyISAM或Innodb,我可以使用插入语句每秒插入数千行。InfiniDB插入语句的插入速度

回答

2

INSERT INTO VALUES(),(),...比分离INSERT查询要快得多。

0

您不使用面向列的数据库进行OLTP操作。它们被设计用于批量插入。您可以在cpimport作业中自动插入。

0

InfiniDB是一个面向列的数据库,其中MyISAM和Innodb是面向行的。 基本上,这意味着数据保存在分别按列和行分组的硬盘上。 因此,如果您想要在面向列的数据库中插入新行,则必须为每列插入值,每个列都位于硬盘上的不同位置。 但是,从1列(例如调用AVG())获取所有数据比使用面向行的dbms快得多。

我建议您阅读面向列的数据库维基百科文章的想法:http://en.wikipedia.org/wiki/Column-oriented_DBMS

2

我为InfiniDB

建筑师你在做INSERT INTO或你做一大堆个人INSERT命令的?你说你正在做数千行,那么你能用INSERT INTO做到这一点吗?

cpimport已针对快速加载进行了优化,为什么我们推荐将它用于INSERT INTO和LOAD DATA。由于数据库的性质和下面的体系结构,出于这种原因有几个原因。据说,我们意识到人们希望能够像使用INSERT INTO和LOAD DATA一样使用INSERT INTO和LOAD DATA,并希望获得与使用cpimport相似的更快的性能。目前这项工作正在进行中,将于6月底/ 7月初推出的InfiniDB 4.6版本发布。这些操作将被优化以在没有未完成提交时的高速模式下操作。