我正在编写一个示例程序来测试数据库连接性能(MySQL,Oracle,MSSQL)。
使用以下代码准备所有数据并排队:InsertOnSubmit()
然后使用以下方法将其推送到数据库:
DateTime dbInsertStartTime = DateTime.Now;
db.SubmitChanges() ;
DateTime dbInsertStopTime = DateTime.Now;
我能够在几毫秒内获得操作时间。
如何获取排队或写入到DB的数据大小?
该程序允许用户定义要生成的数据数量(如10种数据类型A,4种类型B等),而不是应该模拟实际工作条件的数量。
因此,我想知道生成了多少数据。
答案 0 :(得分:0)
DataContext
有GetChangeSet()
method,返回ChangeSet
,其中包含已添加,修改或删除的所有对象 - 每个对象都有一个集合。使用更多的Linq,您可以将它们分成几种类型并计算它们以查看每种类型的数量。
另外,正如评论中注意到的那样,在进行计时操作时,您应该使用System.Diagnostics.Stopwatch
代替DateTime
;它具有更好的精度。
这个答案指的是Linq-To-SQL的DataContext
。对于那些使用实体框架的人,DbContext.SaveChanges()
返回一个int
,表示受影响的实体数量,您可以使用SavingChanges
事件检查ObjectStateManager
并获取对象状态