mysql 巨大的操作

标签 mysql ruby-on-rails database

我目前正在将一个巨大的 CSV 文件从我的 iPhone 导入到 Rails 服务器。在这种情况下,服务器将解析数据,然后开始将数据行插入数据库。 CSV 文件相当大,操作结束需要很长时间。

由于我是异步执行此操作,因此我的 iPhone 可以转到其他 View 并执行其他操作。

但是,当它请求另一个表中的另一个查询时。这将挂起,因为第一个操作仍在尝试将 CSV 的信息插入数据库。

有没有办法解决这类问题?

最佳答案

只要手机不关心数据库插入何时完成,您可能想尝试将 CSV 文件存储在服务器上的 tmp 目录中,然后使用脚本从该文件写入数据库。或者干脆将其存储在内存中。这样,一旦手机发布了 CSV 文件,它就可以继续处理其他事情,而脚本会异步处理数据库插入。是的,@Barmar 关于使用 InnoDB 引擎而不是 MyISAM(在某些配置中可能是默认的)是正确的。

或者,您可能需要考虑启用“低优先级更新”,这将延迟写调用,直到所有挂起的读调用完成。参见 this article关于 MySQL 表锁定。 (我不确定你说的到底是什么挂了:更新,或者在执行更新时读取......)

无论如何,如果您从手机异步发布数据(即,不是从 UI 线程),只要您尝试使用的并发 HTTP 数量不超过最大数量,这应该不是问题连接。

关于mysql 巨大的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15399108/

相关文章:

php - 插入和选择嵌套查询中的 SQL 语法错误

ruby-on-rails - 如何在 rails_admin 的字段上启用 CKEditor?

ruby-on-rails - rake 数据库 :migrate giving 'unexpected\n' error

database - 开发战术: phoenix development cycles

database - 在 Enterprise Architect 中的表之间复制列

mysql - Windows 8.1 Wampserver Mysql 无法运行

php - 单行数据库的随机输出

python - 如何解决 flask 中的坏键错误?

sql - ActiveRecord 左外连接和子句

android - 如何从 Android 手机与服务器的数据库通信?