我正在尝试插入一个100的表(我听说它是mySQL使用的最佳大小),我在SBT0.13.6中使用Scala2.10.4,而我使用的jdbc框架是scalikejdbc和Hikaricp,我的连接设置如下所示:
val dataSource: DataSource = {
val ds = new HikariDataSource()
ds.setDataSourceClassName("com.mysql.jdbc.jdbc2.optional.MysqlDataSource");
ds.addDataSourceProperty("url",
我使用的是最新的EclipseLink版本和MySQL 5.5 (表类型InnoDB)。我一次插入大约30900张唱片(也可能更多)。问题是,insert性能非常差:插入所有记录需要大约22秒(与JDBC: 7秒相比)。我读过,使用批次书写应该有帮助-但没有!?
@Entity
public class TestRecord {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Long id;
public int test;
}
插入记录的代码:
factory = Persis
这是我在阅读了几个关于jpa批量插入的主题后创建的简单示例,我有两个持久对象User和Site。一个用户可以有多个站点,所以我们这里有一对多的关系。假设我想创建用户,并创建/链接几个站点到用户帐户。考虑到我愿意对Site对象使用bulk insert,下面是代码的样子。
User user = new User("John Doe");
user.getSites().add(new Site("google.com", user));
user.getSites().add(new Site("yahoo.com", user));
Ent
我正在使用Spring框架的JdbcTemplate机制。我还有调度器类来解析大型XML文件(>500 it ),这些文件在基于xml的配置中使用cron表达式调度,配置为池大小=10 .When调度器读取一个XML文件,解析每个元素并插入mariadb数据库,它插入大约8000条记录,但之后冻结或跳过一些记录,只有以下例外:
org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception i
我使用游标从一个大的postgres表中检索记录。(4亿条记录,使用子表对数据进行分区。)我的光标定义为:
select * from parent_table order by indexed_column
同时使用JDBC和psql,对于最初的几十万次检索,性能是一致的。在那之后,它就掉下了悬崖,再也不能恢复了。在服务器上,CPU、内存和磁盘活动相当均匀;也就是说,没有任何基于系统的东西是明显的罪魁祸首。我最初怀疑这可能是网络问题,但我从不同的网络重现了这一点。
下面是psql:
db@dbdev> fetch 100000 from all_persons;
Time: 13995
在我的grails (1.3.7)应用程序中,我使用JDBC模板从CSV文件批量导入1000条记录(因为它比使用vanilla GORM/hibernate快得多,正如您所期望的那样)。
例如:
class Book {
String title
}
和
// For each CSV record...
insertStatementList.add("insert into book (id, title) values (nextval('hibernate_sequence'), thetitle)")
...
JdbcTemplate bulk
正如你我都知道的,关于这类错误消息有很多问题。
但是我找不到任何好的答案,因为答案太多了。
我有一个存储从客户端发送的nonce的表。
但有时(偶尔) db会抱怨重复的主键插入,即使没有记录具有完全相同的主键。
下面是JVM所展示的内容。
[#|2012-11-09T11:06:52.098+0900|WARNING|glassfish3.1.2|javax.enterprise.system.container.ejb.com.sun.ejb.containers|_ThreadID=236;_ThreadName=Thread-2;|EJB5184:A system exception o