`
yinter
  • 浏览: 245103 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

发现ror中比较头痛的问题

阅读更多
前些日子在公司用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

估计是测试其数据库的连接,但还是没有解决问题,不知道大伙有没有遇到类似情况!
分享到:
评论
11 楼 crag 2008-07-10  
改用ODBC方式连接数据库,应该能解决问题,目前正在测试观察中。
10 楼 seemoon 2008-07-09  
关注,就这个SELECT 1语句会造成死锁,有些匪夷所思,但就是发生了。

令人头大的事情,要不自己写个adapter?
9 楼 crag 2008-07-09  
换驱动有可能解决问题,我另外一个系统是linux下部署的,没有发现这些问题。
有问题的都是windows下部署的web服务。。。
windows下有哪些驱动程序可换?请指点下。
8 楼 crag 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
7 楼 yinter 2008-03-20  
更换数据库那是不太可能啊,公司所有的产品都是基于sql server的,所以不考虑这种方案!
但为何死锁还是没找到原因,便死锁这种情况不是一定的,时尔会,时尔正常,这个可能与操作此数据库此表的多少有关,因为这个表每天都有很多地方要频繁读取,但我这边是对这个表作管理的,包括增,册,改,及其与多个表的关联查询等,发现在当峰期死锁的情况很大。

并且发现,rails动态生成的语句太多,你处理一个修改删除,它会附加多个其它的select操作,对性能也是一个考验,并且发现生成的sql很是难看,也是不很优的那种!
6 楼 blogbin 2008-03-18  
要不换换sql的驱动看看?
5 楼 woody_420420 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用得也不少,感觉也蛮不错啊。
4 楼 mirage 2008-03-15  
woody_420420 写道
"SELECT 1"就是用来检测数据库链接的。最近做的几个COM的项目也都是通过这种方式来测试。但是SELECT 1能造成数据库死锁?LZ似乎应该从其他角度查查原因~
另:robbin说得对,如果用Rails的话,我肯定是和SQL SERVER说拜拜了。。。呵呵


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

相关推荐

    RoR中文解决方案(很不错哦)

    描述中提到的“插件”可能是解决RoR中文问题的一种方法。在RoR中,插件是一种可以扩展和定制框架功能的方式,它们通常包含模型、控制器、视图、帮助器以及其他相关的文件。这个插件可能解决了RoR在处理中文数据时的...

    神经网络ror resenet模型

    该模型解决了深度神经网络训练中的梯度消失问题,允许构建非常深的网络结构。而“Ror”(Residual-of-Residual)则是对ResNet的一种扩展,进一步优化了网络的性能,尤其在图像分类任务上表现突出。 **ResNet模型...

    初探ROR

    总结来说,Ruby on Rails提供了一种高效且优雅的Web开发方式,通过强大的工具和库,使得开发者能够专注于创新和解决问题,而非基础架构的搭建。对于初学者,深入理解Ruby语言和Rails框架的原理,掌握其核心概念和...

    Windows 上搭建 ROR环境

    ### Windows上搭建Ruby on Rails(ROR)环境详解 ...在实际开发过程中,可能会遇到更多具体的细节问题,建议及时查阅官方文档或其他开发者的经验分享,以便更好地解决问题。希望每位学习者都能顺利踏上Rails开发之旅!

    ROR 文件的上传与下载

    例如,在本例中,`MEDIUMBLOB`被选中,因为它足以满足大多数文件的大小需求,同时避免了使用更大数据类型可能导致的性能问题。 #### 视图设计与文件上传表单 接下来是视图的设计,即用户界面部分。Rails应用程序...

    ROR环境配置

    在IT行业中,Ruby on Rails(简称ROR)是一款基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在简化Web应用开发过程,提高开发效率。本文将深入探讨如何配置ROR开发环境,以及...

    RoR 培训课程PPT

    - **在线社区**:参与Ruby on Rails官方论坛或Stack Overflow等社区,获取最新的技术资讯和解答开发过程中遇到的问题。 - **实战项目**:通过实际构建项目来加深对理论知识的理解,推荐尝试开发一个简单的博客系统或...

    使用ROR编写ORACLE WEB应用

    在实际开发中,还可能遇到性能优化、事务处理、错误处理等问题。Oracle数据库提供了丰富的功能,如索引、分区、存储过程等,可以用于提升应用性能。同时,了解Rails的缓存机制和Oracle的并行执行策略也很重要。 ...

    ASP.NET项目移植ROR实践----DB转移(已完成)

    ASP.NET项目移植到Ruby on Rails (ROR)的实践中,DB转移是一个关键步骤。这个过程涉及到将现有的ASP.NET应用程序的数据模型、数据库结构以及业务逻辑迁移到ROR框架中。在这个过程中,我们需要理解两个不同框架之间的...

    mysqlDriver4ror.rar

    在给定的压缩包“mysqlDriver4ror.rar”中,包含的文件主要涉及MySQL的RubyGem版本和一个关于MySQL驱动安装的文本文件。RubyGem是Ruby语言的包管理器,用于简化库和依赖项的安装。 1. **MySQL RubyGem**: 这些gem...

    我的ror的第一天

    压缩包中的 "ror.txt" 文件可能是作者记录的笔记、代码片段或者是在学习过程中遇到问题及解决方案的集合。内容可能涵盖从基础概念如路由、控制器、模型、视图到更高级的主题,如ActiveRecord ORM(对象关系映射)、...

    Source.Insight.v3.50.0027-ROR.rar

    当用户在编辑代码时,系统会实时分析代码,显示变量的类型、函数的参数列表以及可能的错误,帮助开发者及时发现和修复问题。这种即时反馈机制是其他许多代码编辑器所不具备的,它显著提升了编程效率。 再者,Source...

    RoR2SharedItems:BepInEx Modloader的降雨风险2共享物品mod

    多人RoR2游戏应该快节奏而有趣。 但是,通常情况下,玩家会遇到战利品被盗或一名玩家主导游戏的问题。 显然,解决此问题的最佳方法是首先消除ho积的动机! ShareSuite是一款具有多种系统的mod,旨在共享您在整个...

    ROR books 经典教程 入门 提高

    这里可能存在着一定的理解偏差,因为文件中提供的具体内容更多地是关于 Ruby 语言本身而非 Rails 框架,但考虑到标题和描述中的关键词“经典教程”、“入门”、“提高”,我们可以认为该教程涵盖了 Ruby 语言学习的...

    RVM配置ROR

    ### RVM配置Ruby on Rails (ROR) 知识点详解 #### 一、RVM简介与作用 RVM(Ruby Version Manager)是一款强大的工具,主要用于管理不同的Ruby版本及其依赖库。通过RVM,开发者可以在同一系统中安装多个Ruby版本,并...

Global site tag (gtag.js) - Google Analytics