`
weitao1026
  • 浏览: 1034229 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
阅读更多

什么叫做数据库的并发,我看到定义上是说:多个用户同时在使用一个数据库,我们就可以说这个数据库支持并发。

那么我可以这么理解吗?新浪某个应用同时在线人数为2亿,那么表示新浪的数据库并发量为2亿?

 

并发量为2亿,如果sort_buffer_size设置为1M的话,read_buffer_size,join_buffer_size设置也都设置为1M的话,那岂不是2亿*3,至少得有6亿/1024/=58593.7500(G),那数据库不是总共需要6W左右的内存啊,天了,就算用集群的话,一个节点64个G,68593.75/64=915.52734375,总共需要916个节点,需要安置近千台pc服务器。

这得需要多大的机房,存放这么多数据库服务器呢?

 

这样的应用再多几个,光PC服务器机器的购买以及维护得花费多少money,难怪it界流行一句话,啥高性能都是money堆出来的啊!

我自己都感觉出自己理解的比较浅薄了,欢迎大家指点!

 

我们做数据库并发的数量,要区别于在线人数。

比如一个用户平均100秒进行一次数据库操作,那你所谓在线2亿人的话,数据库并发就在每秒200W。这显然是需要一个分布式系统才能达到的。

其实你问了一个很好的问题,就是数据库每秒能处理多少个并发操作,估计真正做过测试的人也不多吧。

我去年是测到400多个写操作,当然这取决于你的服务器性能,业内据说能做到500-1000吧。

 

SQL Server中的timeout设置

上篇文章中, 我们总结了SharePoint里的timeout相关的设置, 文章中我们说到SQL端的选项是不会有什么影响的. 为什么这么说呢?

笔者这一块原来也是晕乎乎. 于是去咨询SQL的资深高级技术支持工程师Peter, 得到了如下的答案.

1. 与SQL相关的timeout, 都是由Client端发起的.

比如说, 我们自己写了个C#小程序, 其中使用了SqlCommand.CommandTimeout属性, 指定它的值为20秒. 那么, 当这个query在SQL端执行了二十秒后, 我们的C#小程序会给SQL Server发送一个TDS Tension数据包, 告诉SQL Server我这边超时了, 你那边的query不用做了. 于是SQL相应client的请求, 断掉connection. Client端报出一条exception, 说SQL Server端的运行时间太长, 超过了我们原定的时限.

 

2. 那么SQL Server Management Studio中有如下两个有关Timeout的选项, 他们是干什么的呢?

  • a. Tools->Options->Query Exection->Execution time-out.

              image

  • b. Right click SQL Server Node->Properties->Connections->Remote Query Timeout.

              image

 

如果我们把Management Studio看作是我们自己写的C#程序, 在这个程序中我们只写下来要执行的语句, timeout设置呢? 这里的a选项指定的值就是SqlCommand.CommandTimeout. 好懂吧. ^_^

 

假设我们的C#小程序连接到SQL Server 1上运行存储过程取数据, 在这个存储过程中, SQL Server 1需要到SQL Server 2上去取原始数据. 那么, 如果SQL Server 2上的查询执行了600秒之后(默认值), 那么SQL Server 1会发给SQL Server 2, 告诉它这个查询我嫌它太久, 你不要做了. 于是SQL Server 1 发给SQL Server 2一个数据包, 告诉它停吧. 然后Server 2断掉他们之间的Connection.

 

由此可见, 在一般情况下, b选项与我们关系不是很大.

 

我在研究这两个选项的时候, 发现StackOverFlow.com上的网友问起相关的问题, 回答问题的人经常给出这两个选项. 其实这是错误的. 调整了之后也不会对SQL端运行超时的问题有改善的.

分享到:
评论

相关推荐

    Sql Server数据库超时问题的解决方法

    Conn.Properties("Connect Timeout") = 15 '以秒为单位 Conn.open DSNtest 如果遇到查询超时的错误,可以在程序中修改Recordset对象的超时设置,然后打开结果集。 例如: Dim cn As New ADODB.Connection Dim rs ...

    Session SQLServer 模式

    1. 配置Web.config:在Web应用程序的配置文件中,需要将`<sessionState>`元素的`mode`属性设置为"SQLServer",并指定SQL Server存储过程的连接字符串。 ```xml mode="SQLServer" connectionString="Data Source...

    PostgreSQL_与_MS_SQLServer比较

    ### PostgreSQL与MS SQL Server在过程语言中的差异 在数据库领域,PostgreSQL 和 MS SQL Server 都是非常受欢迎的关系型数据库管理系统。两者在很多方面都提供了强大的功能支持,但在具体实现细节上存在不少差异。...

    rails配置sqlserver2000

    在Ruby on Rails框架中,与SQLServer 2000集成可能会比与其他常见的数据库系统(如MySQL或PostgreSQL)稍复杂一些,因为SQLServer 2000的兼容性问题和缺少官方支持。然而,通过一些第三方库和适当的配置,我们仍然...

    PHP连接sqlserver数据库

    - **连接超时**:如果连接超时,可尝试调整`connection_timeout`设置。 - **字符集问题**:可能需要设置`CharacterSet`选项以匹配数据库编码,如`'CharacterSet' => 'UTF-8'`。 - **命名策略**:若使用了SQL ...

    分析SQL Server 数据库中的死锁

    在IT领域,尤其是在数据库管理与优化中,理解并解决SQL Server数据库中的死锁问题是一项至关重要的技能。死锁,作为并发事务处理中的一个常见问题,指的是两个或更多的事务在执行过程中,因争夺相同的资源而造成的...

    SQLserver数据库连接字符串

    - `Connect Timeout`:设置连接超时时间,例如`Connect Timeout=30`表示30秒内未建立连接则超时。 - `Application Name`:设置应用程序的名称,有助于追踪连接,如`Application Name=myApp`。 4. **连接字符串的...

    SQL Server 2016 Developer's Guide

    Get the most out of the rich development capabilities of SQL Server 2016 to build efficient database applications for your organization About This Book Utilize the new enhancements in Transact-SQL ...

    如何用SQL Server保持会话状态

    要配置使用 SQL Server 进行会话状态管理,需要在应用程序的 Web.config 文件中设置 `sessionState` 元素,如下所示: ```xml <sessionState mode="SQLServer" stateConnectionString="tcpip=127.0.0.1:42424" ...

    sql server 连接 JAR 包

    useSSL=false&serverTimezone=UTC"; String username = "myUser"; String password = "myPassword"; try { Class.forName("com.mysql.cj.jdbc.Driver"); Connection conn = DriverManager.getConnection(url, ...

    SQLserver全局变量

    12. `@@LOCK_TIMEOUT`:返回当前会话的锁超时设置(以毫秒计),有助于防止死锁问题。 13. `@@MAX_CONNECTIONS`:显示SQL Server允许的最大并发连接数,可了解系统的并发能力。 14. `sp_configure`:执行此存储...

    php下转移sqlserver数据到mysql

    执行前须在mysql中建立和sqlserver中对应表字段相符的...复制耗时根据数据量大小而定,每秒可复制5M左右数据,如果要复制的数据量很大,请临时设置php.ini中的timeout的时间更多些,比如设置为180秒,防止复制失败。

    SQL Server数据库驱动及连接字符串

    - **Connection Timeout**:连接超时时间,单位为秒。 示例连接字符串如下: ```text Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword; ``` 或者使用Windows...

    SQL Server 连接字符串构造及测试工具

    4. **连接超时 (Connection Timeout)**:在尝试建立连接失败后等待的时间(以秒为单位)。 5. **信任连接 (Integrated Security)**:设置是否使用Windows集成身份验证。"True"表示使用,"False"则使用提供的用户名...

    SQL server 2008R2 中 C#Winfoirm 使用 SqlDependency 机制实现 数据库中某一张表的监视 代码

    SqlDependency.Start(connectionString, timeout: TimeSpan.FromMinutes(60)); // 设置为60分钟 ``` 8. **权限要求**:为了使SqlDependency工作,数据库用户需要被授予`VIEW DATABASE STATE`权限,以便服务器可以...

    sqlserver数据库的连接方法

    useSSL=false&serverTimezone=UTC`。 在实际应用中,还应注意数据库连接池的使用,如Apache Commons DBCP、HikariCP或C3P0,它们能有效管理和复用数据库连接,提高性能并减少资源消耗。 此外,确保你的Java环境和...

    配置SQLServer 使用 2 GB 以上的物理内存

    在SQL Server 配置中启用 AWE(Address Windowing Extensions),通过设置`maxservermemory`参数指定可以使用的内存大小。 - **Windows 2000 Datacenter**:此版本支持最多32GB的物理内存。需要注意的是,在使用...

    SQL Server死锁总结.rar

    4. 死锁超时设置:通过调整`deadlock_timeout`系统变量,可以设定等待超时时间。 5. 死锁检测:定期运行DBCC CHECKCONNECTION检查潜在的死锁情况。 6. 使用死锁优先级:设置事务的死锁优先级,让某些事务在死锁时更...

Global site tag (gtag.js) - Google Analytics