timesten通过odp.net访问的插入性能

youngwutao 2013-06-20 10:28:38
最近,小弟在学习了一下timesten,用c#写了一个简单的程序。程序插入10000条记录到timesten数据库,发现性能没有网上说的那么好,插入10000条数据差不多用了1456毫秒,这10000条记录分别都是单独的隐式事务自动提交,并且使用了动态sql插入,10000条插入使用了相同的执行计划。程序如下:
            command = conn.CreateCommand();
command.Parameters.Add(new OracleParameter(":intkey1", OracleDbType.Int32));
command.Parameters.Add(new OracleParameter(":strkey1", OracleDbType.Varchar2, 30));
command.Parameters.Add(new OracleParameter(":strkey2", OracleDbType.Varchar2, 30));
command.Parameters.Add(new OracleParameter(":strkey3", OracleDbType.Varchar2, 30));
command.Parameters.Add(new OracleParameter(":strkey4", OracleDbType.Varchar2, 30));
command.Parameters.Add(new OracleParameter(":strkey5", OracleDbType.Varchar2, 30));
command.Parameters.Add(new OracleParameter(":strkey6", OracleDbType.Varchar2, 30));
command.Parameters.Add(new OracleParameter(":strkey7", OracleDbType.Varchar2, 30));
command.Parameters.Add(new OracleParameter(":strkey8", OracleDbType.Varchar2, 30));
command.Parameters.Add(new OracleParameter(":strkey9", OracleDbType.Varchar2, 30));
command.Parameters.Add(new OracleParameter(":strkey10", OracleDbType.Varchar2, 30));
for (int i = 0; i < 10000; i++)
{
try
{
sql = "insert into TestXN values (:1,:2,:3,:4,:5,:6,:7,:8,:9,:10,:11)";
command.CommandText = sql;
command.Parameters[0].Value = i;
for (int j = 0; j < 10; j++)
{
command.Parameters[j + 1].Value = "aaaaaaaaaaaaaaaaaaaaaaaaaa";
}
command.ExecuteNonQuery();
}
catch (OracleException ex)
{
Console.WriteLine(ex.Message);
}
}


TestXN 表的表结构如下:
 create table TestXN  
(
intkey int,
strkey1 varchar(30),
strkey2 varchar(30),
strkey3 varchar(30),
strkey4 varchar(30),
strkey5 varchar(30),
strkey6 varchar(30),
strkey7 varchar(30),
strkey8 varchar(30),
strkey9 varchar(30),
strkey10 varchar(30)
)

插完之后,我查询了一下sys.monitor,结果如下:
DS_CHECKPOINTS=0

PERM_ALLOCATED_SIZE=655360

PERM_IN_USE_SIZE=18202

PERM_IN_USE_HIGH_WATER=18202

TEMP_ALLOCATED_SIZE=65536

TEMP_IN_USE_SIZE=16385

TEMP_IN_USE_HIGH_WATER=17334

XACT_COMMITS=10024

XACT_D_COMMITS=0

CMD_PREPARES=25

CMD_REPREPARES=0

LOG_BUFFER_WAITS=0


当前timesten的数据库设置为:
PermSize:640

TempSize:64

CkptFrequency: 0(disable checkpoint)

CkptLogVolume: 0 (disable checkpoint)

LogBufMB : 256

LogFileSize: 260

LogBufParallelism: 4

LogFlushMethod: 2

Isolation: 0
其他项采用了默认设置。

为何性能会如此差呢,从monitor里可以看出在此期间没有checkpoint写入,日志等待也为0,应该几乎没有磁盘写入操作,希望坛子里的亲们能不吝赐教!在此小弟先谢谢了
...全文
366 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

8,028

社区成员

发帖
与我相关
我的任务
社区描述
高性能数据库开发
社区管理员
  • 高性能数据库开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧