论坛首页 编程语言技术论坛

发现ror中比较头痛的问题

浏览 4992 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-03-07  
前些日子在公司用rails开发了一个管理后台,但是给同事使用过程中,经常发现会使数据库被死锁,跟踪数据库发现是操作了一个"SELECT 1",但思索不解其原因,后面就直接查询其源代码,
内容在"C:\ruby\lib\ruby\gems\1.8\gems\activerecord-2.0.2\lib\
active_record\connection_adapters\sqlserver_adapter.rb"(226,30):       @connection.execute("SELECT 1").finish处,
方法内容如下:
# CONNECTION MANAGEMENT ====================================#

      # Returns true if the connection is active.
      def active?
        @connection.execute("SELECT 1").finish
        true
      rescue DBI::DatabaseError, DBI::InterfaceError
        false
      end

估计是测试其数据库的连接,但还是没有解决问题,不知道大伙有没有遇到类似情况!
   发表时间:2008-03-14  
大伙都没有遇到这个问题?怎么没人反映啊!
ROR还真的不成熟,用的过程中发现不少问题,都没法解决!
动态优点与缺点都很明显!
0 请登录后投票
   发表时间:2008-03-14  
连接SQL Server数据库可能是差点,你要知道开发RoR的那帮人都用MacOS,他们根本没有windows开发环境。
0 请登录后投票
   发表时间:2008-03-14  
"SELECT 1"就是用来检测数据库链接的。最近做的几个COM的项目也都是通过这种方式来测试。但是SELECT 1能造成数据库死锁?LZ似乎应该从其他角度查查原因~
另:robbin说得对,如果用Rails的话,我肯定是和SQL SERVER说拜拜了。。。呵呵
0 请登录后投票
   发表时间:2008-03-15  
woody_420420 写道
"SELECT 1"就是用来检测数据库链接的。最近做的几个COM的项目也都是通过这种方式来测试。但是SELECT 1能造成数据库死锁?LZ似乎应该从其他角度查查原因~
另:robbin说得对,如果用Rails的话,我肯定是和SQL SERVER说拜拜了。。。呵呵


不会吧,我正在作一个应用,也用sqlserver。
一般的情况,很难决定更换数据库的。
0 请登录后投票
   发表时间:2008-03-15  
mirage 写道
woody_420420 写道
"SELECT 1"就是用来检测数据库链接的。最近做的几个COM的项目也都是通过这种方式来测试。但是SELECT 1能造成数据库死锁?LZ似乎应该从其他角度查查原因~
另:robbin说得对,如果用Rails的话,我肯定是和SQL SERVER说拜拜了。。。呵呵


不会吧,我正在作一个应用,也用sqlserver。
一般的情况,很难决定更换数据库的。


不知道LS同学“不会吧”是不是觉得我说SQL SERVER很差(这个话题先不谈,呵呵)
只是我觉得在Rails的环境下用SQL SERVER真的是。。。第一,从使用来说就麻烦,还得手动拷代码,在看看mysql,sqlite的使用,那叫一个轻松;第二,还是见robbin的解释,这是一个虽然不一定客观,但是很现实的问题:)
当然,存在就是合理的,既然Rails支持使用SQL SERVER,也不会用了判刑十年之类的。个人爱好而已。呵呵
另:“更换数据库”的话题就大了。。遗留系统。。。领导原因。。。都在左右这个问题。
PS:我SQL SERVER用得也不少,感觉也蛮不错啊。
0 请登录后投票
   发表时间:2008-03-18  
要不换换sql的驱动看看?
0 请登录后投票
   发表时间:2008-03-20  
更换数据库那是不太可能啊,公司所有的产品都是基于sql server的,所以不考虑这种方案!
但为何死锁还是没找到原因,便死锁这种情况不是一定的,时尔会,时尔正常,这个可能与操作此数据库此表的多少有关,因为这个表每天都有很多地方要频繁读取,但我这边是对这个表作管理的,包括增,册,改,及其与多个表的关联查询等,发现在当峰期死锁的情况很大。

并且发现,rails动态生成的语句太多,你处理一个修改删除,它会附加多个其它的select操作,对性能也是一个考验,并且发现生成的sql很是难看,也是不很优的那种!
0 请登录后投票
   发表时间:2008-07-09  
楼主的问题,我这也严重遇到了,因为之前几个管理后台都是用的SQLServer数据库的。管理的表数据又被很多第三方业务用到,结果是经常发生死锁~!

也试过改源码,之前是另外一个同事改,结果没解决问题。
我现在把它那个测试连接的去掉了,直接返回false,让它重新获取数据库连接。
这样“读”数据没问题,但是修改数据就出问题了。

请问楼主有解决办法了没有?

# Returns true if the connection is active.
def active?
  #@connection.execute("SELECT 1").finish
  #true
  rescue DBI::DatabaseError, DBI::InterfaceError
  false
end
0 请登录后投票
   发表时间:2008-07-09  
换驱动有可能解决问题,我另外一个系统是linux下部署的,没有发现这些问题。
有问题的都是windows下部署的web服务。。。
windows下有哪些驱动程序可换?请指点下。
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics