怎么在少占用cpu的前提下往数据库里写入海量数据
数据量每小时在5万条左右,在程序里面循环调用存储过程的插入单条数据的过程来插入数据,但CPU的占用率达到百分之百,我想一次传入一万条的数据,让存储过程只执行一次,但不知道存储过程能否传数组或结构体!不知道高手们有什么好的建议?
[解决办法]
大数据量的插入,一般数据库都有专门的方法
比如SQLServer和Sybase就可以用bcp
[解决办法]
循环使用Sleep(uint)
[解决办法]
下面是 SQL SERVER 帮助中的说明:
================================================
使用 BULK INSERT 语句,还可以将数据从数据文件传送到 SQL Server 表。然而,BULK INSERT 语句不能将数据从 SQL Server 实例大容量复制到数据文件。BULK INSERT 语句使您得以利用 Transact-SQL 语句而不是命令提示符来实现 bcp 实用工具的功能,将数据大容量复制到 SQL Server 实例。
还可以通过编写程序,使用大容量复制 API 在 SQL Server 和数据文件之间大容量复制数据。大容量复制 API 可以在基于 ODBC、OLE DB、SQL-DMO 和 DB-Library 的应用程序中使用。
================================================
你可以先把数据保存成文本文件,经过一定的时间以后,导入数据库。
[解决办法]
oracle的话,可以试着使用单个sql语句的绑定变量写法啊
就是
insert into t values(:x)之类的写法
跟普通的sqls相比,大约可以节省几倍的资源……
不知道适合你要求不