Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何将开发数据库缩减到更小的规模?_Mysql_Ruby On Rails - Fatal编程技术网

Mysql 如何将开发数据库缩减到更小的规模?

Mysql 如何将开发数据库缩减到更小的规模?,mysql,ruby-on-rails,Mysql,Ruby On Rails,问题在于: 我在开发中使用了一个转储数据库,数据库大小约为2GB,这使得许多ActiveRecord命令(主要是“where”命令)至少运行5分钟 在“开发”中,有什么解决方案可以加快这一速度? 其中的一些选项是创建一个开发的部分数据库(还并没有研究如何进行),缓存,由于某种原因无法工作,或者还有其他一些选项。我甚至会考虑对AccVIECORD调用中的某部分进行编码,只是为了在开发模式中实现这一点。 < P>根据您提供的信息,有几种方法可以实现这一点。 如注释中所述,您可以创建一个种子文件并构建

问题在于: 我在开发中使用了一个转储数据库,数据库大小约为2GB,这使得许多ActiveRecord命令(主要是“where”命令)至少运行5分钟

在“开发”中,有什么解决方案可以加快这一速度?


其中的一些选项是创建一个开发的部分数据库(还并没有研究如何进行),缓存,由于某种原因无法工作,或者还有其他一些选项。我甚至会考虑对AccVIECORD调用中的某部分进行编码,只是为了在开发模式中实现这一点。

< P>根据您提供的信息,有几种方法可以实现这一点。 如注释中所述,您可以创建一个种子文件并构建一些记录以用于开发。这是大多数开发数据库的常见做法(尤其是对于多个开发人员)

另一个想法是编写一个rake任务,在staging数据库中最依赖的表(比如
users
)中隔离一些相关行,并从该记录中构建虚拟数据。这可能会帮助您构建“真正的”数据,而无需从头开始。如果有大量的关联,这可能是一项不值得做的工作。 Gem可能会在那个地方派上用场


警告一句,如果暂存数据库有任何PII(个人识别信息),您可能希望对其进行模糊处理,这样您就不会在本地存储用户信息。

另一个常见的解决方案是创建第四个称为“暂存”的环境。因此,基本上你可以在开发中使用一个种子数据库,然后在登台环境中的“真实”数据上试用你的应用程序。你只需在
config/environments
中添加一个新文件,在
database.yml
中添加一个额外条目,就可以创建一个新环境。您可以复制
development.rb
production.rb
,这取决于您是否打算在可从internet访问的服务器上运行暂存。我不确定我是否理解第一条注释,尽管从第一眼看,它似乎会导致相同的加载时间。至于第二个,我不想使用remore数据库作为开发数据库。如果还有其他选项,那么这两个选项是什么?其想法是,您拥有一个具有有限数据集的开发环境-通常是从用于开发和调试的种子文件创建的。以及另一个尽可能反映生产环境的环境。因此,是的,它确实解决了您的问题。启用“捕捉开发”并不是一个好的解决方案,因为您希望在开发中立即进行更改。而使SQL查询更快的唯一真正方法是使用索引并确保查询得到优化。感谢Bobby的回答。创建种子文件可能有点费时,可能不值得。用rake任务隔离数据可能是个好主意,但另一方面,正如您所说的,这可能比它值得做的工作更多。在我的特殊情况下,由于加载数据的速度太快,而且数据大部分都是按原样使用的
,为了加快加载时间,我已经缓存了开发环境的代码部分。此外,供参考,您给出的第一个建议中有一个可能用于此目的的宝石