关于连接池和行版本的小疑问

时间:2021-06-07 04:24:38
1. 物理上一台web服务器A,一台数据库服务器B,A用ConnectionString 连接B时,默认池大小100。我的问题是
   A. 建立连接池时,A中发生是什么动作,B中发生的是什么动作。
   B. 除了ConnectionString中,还有什么地方可以配置池的相关特性,或还有哪些配置可能影响池的特性。

2. SQL Server 2005 增加了READ_COMMITTED_SNAPSHOT隔离级别,
   A. 对于一行数据,会保存多少个version?
      是一段时间内所有的更新数目:如果是这样,是不是一段时间不更新,tempdb中就会只保留最新的版本,旧版本就会被删除呢?
      还是累计到达n个版本后就会在增加新版本的同时删掉最旧的版本:这个最旧是根据行版本建立时间,还是指最后一次使用此行版本的时间

   B.生产数据库大小是100G, 且更新频繁,如果平均行版本5-10个,那tempdb得大小岂不是太惊人了,如何估算行版本所需要的空间?
      我想这是很重要。

请指教,提供思路也可以哦。

10 个解决方案

#1


帮顶~~

#2



oooo.....等待。。。。

#3



帮顶

#4



SELECT @@SPID

#5


引用
 A. 对于一行数据,会保存多少个version? 
      是一段时间内所有的更新数目:如果是这样,是不是一段时间不更新,tempdb中就会只保留最新的版本,旧版本就会被删除呢? 
      还是累计到达n个版本后就会在增加新版本的同时删掉最旧的版本:这个最旧是根据行版本建立时间,还是指最后一次使用此行版本的时间


SQLServer后面有一支Process每隔一分钟就去检查Version Store的状态,并根据具体情况(Tempdb可用空间大小、行版本库大小、
Snapshot事务的执行时间等等)
会回收行版本空间。

引用
  B.生产数据库大小是100G, 且更新频繁,如果平均行版本5-10个,那tempdb得大小岂不是太惊人了,如何估算行版本所需要的空间? 
      我想这是很重要。 


这个就要看你的系统更新的频繁度及每次更新的数据行数来算了。

100G的数据,加上行版本控制之后,tempdb应该是很吃紧的。


#6


up

#7


基本是这样的。这个问题我已基本了解清楚,可以告一段落了,我之所以关心这个,是想知道其对性能的影响。我简单的测试了一下,目前掌握的信息是:
1. READ_COMMITTED_SNAPSHOT 大大减少了Lock requests & Lock request wait time
2. 磁盘IO增加得比较厉害
3. 系统整体处理能力提升有限,约1-5%
4. tempdb急剧增肥
我想重新好好测一下,可是没有严谨的测试方案和好的测试条件。
如果各位有关于READ_COMMITTED_SNAPSHOT的性能测试,或者有关其对性能影响方面的文章/资料,请留下URL,谢谢。
引用 5 楼 Garnett_KG 的回复:
引用
A. 对于一行数据,会保存多少个version? 
      是一段时间内所有的更新数目:如果是这样,是不是一段时间不更新,tempdb中就会只保留最新的版本,旧版本就会被删除呢? 
      还是累计到达n个版本后就会在增加新版本的同时删掉最旧的版本:这个最旧是根据行版本建立时间,还是指最后一次使用此行版本的时间 
 

SQLServer后面有一支Process每隔一分钟就去检查Version Store的状态,并根据具体情况(Tempdb可用空间大…

#8


了解 连接池技术细节 兄弟 来指教一下呀!

#9


学习..

#10


自己顶

#1


帮顶~~

#2



oooo.....等待。。。。

#3



帮顶

#4



SELECT @@SPID

#5


引用
 A. 对于一行数据,会保存多少个version? 
      是一段时间内所有的更新数目:如果是这样,是不是一段时间不更新,tempdb中就会只保留最新的版本,旧版本就会被删除呢? 
      还是累计到达n个版本后就会在增加新版本的同时删掉最旧的版本:这个最旧是根据行版本建立时间,还是指最后一次使用此行版本的时间


SQLServer后面有一支Process每隔一分钟就去检查Version Store的状态,并根据具体情况(Tempdb可用空间大小、行版本库大小、
Snapshot事务的执行时间等等)
会回收行版本空间。

引用
  B.生产数据库大小是100G, 且更新频繁,如果平均行版本5-10个,那tempdb得大小岂不是太惊人了,如何估算行版本所需要的空间? 
      我想这是很重要。 


这个就要看你的系统更新的频繁度及每次更新的数据行数来算了。

100G的数据,加上行版本控制之后,tempdb应该是很吃紧的。


#6


up

#7


基本是这样的。这个问题我已基本了解清楚,可以告一段落了,我之所以关心这个,是想知道其对性能的影响。我简单的测试了一下,目前掌握的信息是:
1. READ_COMMITTED_SNAPSHOT 大大减少了Lock requests & Lock request wait time
2. 磁盘IO增加得比较厉害
3. 系统整体处理能力提升有限,约1-5%
4. tempdb急剧增肥
我想重新好好测一下,可是没有严谨的测试方案和好的测试条件。
如果各位有关于READ_COMMITTED_SNAPSHOT的性能测试,或者有关其对性能影响方面的文章/资料,请留下URL,谢谢。
引用 5 楼 Garnett_KG 的回复:
引用
A. 对于一行数据,会保存多少个version? 
      是一段时间内所有的更新数目:如果是这样,是不是一段时间不更新,tempdb中就会只保留最新的版本,旧版本就会被删除呢? 
      还是累计到达n个版本后就会在增加新版本的同时删掉最旧的版本:这个最旧是根据行版本建立时间,还是指最后一次使用此行版本的时间 
 

SQLServer后面有一支Process每隔一分钟就去检查Version Store的状态,并根据具体情况(Tempdb可用空间大…

#8


了解 连接池技术细节 兄弟 来指教一下呀!

#9


学习..

#10


自己顶