0 0

rails应用中频繁写数据库,求优化方案,谢谢!5

rails工程中,当用户数达到10人,并且同时提交数据的时候,会有每人500条数据,每条数据会对5个数据表进行insert操作。

系统中使用一个数组进行数据缓存,然后使用一个线程读取数组的数据,进行数据库操作。

问题是:当缓存数组中的数据比较多的时候,用户有其他页面的读取数据时,不但相应速度有点慢,而且缓存数组中的数据库操作会有

异常,异常显示是save操作失败,导致后边的关联表写入也失败,可以在异常时,重新写入,但是效率非常低。

在此提出问题,请大家帮忙优化一下,谢谢!

数据库用的sqlite3.
rails是使用2.3.8.
2012年2月28日 00:16

2个答案 按时间排序 按投票排序

0 0

这个是设计的不合理吧,即时现在用户数10搞定了,100个呢,1000个呢,所以单个操作竟然要2500条insert,这个不合理,重新规划一下这部分数据吧,不是非常重要的话直接用个缓存数据库存这部分数据吧,可以试试redis,设置成每几万条备份一下数据。既快又不失可靠性。

2012年2月28日 18:42
0 0

我提几个建议
  1 用双向链表缓存数据
  2 用批量入库
  3 如果不需要验证表关联,将从表外键失效

2012年2月28日 09:39

相关推荐

    对优化Ruby on Rails性能的一些办法的探究

    本文将深入探讨几种优化Rails应用性能的方法,特别是针对内存管理和垃圾回收(Garbage Collection, GC)等问题。 #### 导致Rails应用变慢的原因 通常来说,Rails应用变慢的原因可以归结为两大类: 1. **错误地选择...

    Ruby-RecordCache在Rails3中缓存ActiveModelRecords

    在Rails 3中,开发者经常面临数据库查询频繁,导致性能瓶颈的问题。为了解决这个问题,RecordCache是一个有效的解决方案,它专门设计用于缓存Active Model Records。 RecordCache是一个轻量级的库,它通过将Active ...

    Ruby on Rails敏捷开发最佳实践源代码

    这个压缩包包含了“Ruby on Rails敏捷开发最佳实践”一书中的所有源代码示例,这些代码实例深入浅出地展示了如何运用Rails框架进行高效、灵活的Web应用开发。 在Ruby on Rails中,"敏捷开发"意味着快速响应变化,...

    Ruby-SecondLevelCacheActiveRecord的writethrough和readthrough缓存库

    在Ruby开发中,数据库操作是应用性能的关键因素之一。为了提高效率并减少对数据库的直接访问,开发者常常采用缓存技术。...对于大型、高并发的Ruby on Rails应用,这是一个值得考虑和采用的解决方案。

    Ruby-IdentityCacheActiveRecord的一个blob级缓存解决方案

    **Ruby-IdentityCacheActiveRecord: 一个Blob级缓存解决方案** 在Ruby开发中,数据库查询是性能的关键瓶颈...通过正确配置和使用IdentityCache,可以显著提高Rails应用的读取性能,降低数据库压力,从而提升用户体验。

    对关系型数据库局限性的重新思考

    然而,随着数据量的增长和业务场景的多元化,关系型数据库的局限性逐渐显现,而NoSQL数据库的出现则提供了一种新的思路和解决方案。本文将深入探讨关系型数据库的局限性,并分析NoSQL数据库的优点如何被借鉴,以期对...

    确保设计将在用户通过身份验证时更新模型上的.zip

    5. **数据库操作**:在Rails应用中,更新模型通常涉及到与数据库的交互。当用户登录时,执行一个更新查询,将`last_seen_at`字段设置为当前时间。 6. **安全性**:保持用户状态的最新对于某些应用很重要,比如在线...

    框架数据库

    在实际应用中,常见的框架数据库有如Ruby on Rails的ActiveRecord,Django的SQLite,以及Node.js的Sequelize等。这些数据库系统都为各自框架提供了强大的数据管理功能,简化了开发流程,提升了开发效率。通过深入...

    Rails实现字段加密存储

    本文将详细介绍如何在Rails应用中实现字段加密存储,并通过具体的示例代码来展示这一过程。具体步骤包括:选择加密算法、生成加密密钥、编写加密与解密逻辑,以及如何在模型中使用自定义序列化器来自动处理字段的...

    Ruby-Mobility可拔插的Ruby翻译框架

    在传统的Ruby on Rails应用中,通常使用`I18n`库来处理翻译。然而,随着应用规模的增长,翻译管理可能会变得复杂,特别是在处理复杂的模型关联和动态内容时。Ruby-Mobility通过引入“翻译载体”(Translation ...

    Ruby-Readthis基于Redis的高性能池化ActiveSupport兼容的缓存

    若要在Rails应用中使用Readthis,可以在`config/initializers/cache.rb`中配置: ```ruby Rails.cache = Readthis::Cache.new ``` 6. **扩展与定制** Readthis提供了自定义序列化器和过期策略的选项,可以...

    xcode 中 CoreData的第三方包的使用 项目源码

    - **批量操作**:例如批量插入、更新和删除数据,避免频繁的数据库交互,提高性能。 - **错误处理**:许多库提供了更好的错误处理机制,使开发者更容易调试和解决问题。 - **事务支持**:第三方库可能提供了更...

    浅谈网站架构中缓存的应用

    - **更新策略**:包括写直达(Write Through)、写回(Write Back)、写旁路(Write Around)等。 - **过期策略**:如基于时间的过期(TTL)、基于访问频率的过期(LFU)等。 - **清除策略**:如最近最少使用(LRU)...

    Scaling Twitter

    - **增加索引**:对于频繁出现在查询条件中的字段(如WHERE子句),需要添加索引以加快查询速度。 - **数据分区**:尽管Twitter早期并未进行有效的数据分区,但文档多次提到如果可以重新设计应用的话,将优先考虑...

    web-im-1.4.11.zip_im_web im_视频聊天

    3. **消息存储与检索**:为了保证消息的历史记录,系统需要将聊天内容存储在数据库中,以便用户可以查看历史消息。 4. **状态管理**:用户的状态(在线、离线、忙碌等)管理也是Web IM的重要组成部分,有助于用户...

    开发应用程序

    13. **性能优化**:通过减少加载时间、优化数据库查询、使用缓存等手段,提升应用的性能和用户体验。 14. **部署与运维**:应用上线后,需要考虑服务器配置、负载均衡、监控和故障恢复等运维问题,现代云服务如AWS...

    spotify-clone-源码.rar

    本篇文章将深入探讨如何利用编程技术构建一个类似于Spotify的音乐播放应用,我们将从"spotify-clone-源码.zip"这个压缩包中的源代码入手,解析其背后的架构设计、功能实现和技术栈。 首先,我们来了解一下"spotify-...

    SQL牢记的守则二十一条

    然而,在实际工作中,对T-SQL命令的全面了解能够帮助我们在遇到特定问题时迅速找到解决方案。例如,了解`TOP`、`OFFSET`和`FETCH NEXT`等命令可以帮助我们更高效地处理数据。 #### 二、避免使用游标 游标是SQL中最...

    notes

    在这个“notes-master”压缩包中,很可能是包含了这个笔记应用的源代码、文档和其他相关资源。 一、笔记应用的基础架构 1. 数据结构:笔记应用的核心是数据结构,它决定了如何存储和检索笔记。通常,每个笔记会...

Global site tag (gtag.js) - Google Analytics