批量插入sybase数据库的方法我目前想到两个,一个是如果装有sybase客户端,可以使用它的BCP,这个性能提升比较明显。而如果没有,可以使用jdbc批量插入,同时使用sybase的jdbc jar包--jconnect自带的参数设置,也可以显著提升性能。jdbc 批量插入的写法就不多说了,这里说一下提升性能的参数吧。
1.ENABLE_BULK_LOAD
对于jConnect 6.05和7.0版本的,当把这个参数设为true时,性能可以提升几十倍。一秒存入10K的数据量应该是没问题的。具体BCP的原理是什么,欢迎大家拍砖哈。这里给出执行executeBatch时的栈信息,可以看到jConnect会使用BCP插入数据。
at com.sybase.jdbc4.jdbc.SybConnection.getAllExceptions(SybConnection.java:2475)
at com.sybase.jdbc4.jdbc.SybStatement.handleSQLE(SybStatement.java:2313)
at com.sybase.jdbc4.jdbc.SybBCP.bcpSendRow(SybBCP.java:1093)
at com.sybase.jdbc4.jdbc.SybPreparedStatement.executeBulkBatch(SybPreparedStatement.java:1261)
at com.sybase.jdbc4.jdbc.SybPreparedStatement.executeBatch(SybPreparedStatement.java:1291)
限制:使用这个参数需要Adaptive Server 12.5.2版本以上,且jConnect需要6.05版本以上,且以下参数暂不支持:
unsigned types, bigint, and unitext
encrypted columns and computed columns
当升级到jConnect 7.07时ENABLE_BULK_LOAD的取值有所变化,取值范围有4个:
a.ARRAYINSERT_WITH_MIXED_STATEMENTS 行级记录,当bulk load时可以同时执行别的语句
b.ARRAYINSERT 行级记录,当bulk load时不允许执行别的语句
c.BCP 块级记录,当bulk load时不允许执行别的语句
d.LOG_BCP 块级记录,用的是ASE BCP快速log的功能
2.DYNAMIC_PREPARE
当值为true时,执行语句会预编译在数据库缓存中,这样也能显著提高性能。
分享到:
相关推荐
此外,批量操作和连接池(如C3P0、HikariCP)也能显著提升性能。 9. **安全考虑**: 避免在代码中硬编码数据库凭证,而是使用环境变量或配置文件。此外,使用连接池可以减少并发连接时的安全风险。 通过以上步骤,...
在行为更改方面,Sybase IQ 15.4调整了数据库连接、ODBC/JDBC批量插入性能以及SQL语句和存储过程的使用方式。此外,对管理工具如Sybase Central和Sybase Control Center进行了改进,增加了新的功能和提升了用户体验...
本手册聚焦于Sybase 12.0版本,这个版本在性能、稳定性和功能扩展上都有显著提升。作为数据库管理员或开发人员,理解和掌握Sybase的基本概念、操作和管理技巧至关重要。 **一、Sybase核心概念** 1. **数据模型**:...
Sybase IQ 支持多种数据加载方式,包括批量加载、在线加载和直接SQL插入。结合ETL(提取、转换、加载)工具,可以高效地处理数据集成和清洗过程。 9. **OLAP与数据挖掘** IQ 支持在线分析处理(OLAP)操作,允许...
1. 数据插入与更新:学习如何插入新记录,更新现有记录,以及如何进行批量操作。 2. 查询优化:理解查询执行计划,使用EXPLAIN分析查询性能,并优化SQL语句。 3. 索引管理:了解如何创建、修改和删除索引,以提升...