我有一个 C 程序,它挖掘一个巨大的数据源(20GB 的原始文本)并生成大量 INSERT 以在简单的空白表(4 个整数列和 1 个主键)上执行。设置为MEMORY 表,整个任务在 8 小时内完成。完成后,表中存在大约 1.5 亿行。八小时对我来说是一个完全体面的数字。这是一次性交易。
当尝试将 MEMORY 表转换回 MyISAM 时出现问题,以便 (A) 我将为其他进程释放内存,并且 (B)当我重新启动计算机时,数据不会被杀死。
ALTER TABLE memtable ENGINE = MyISAM
我已经让这个 ALTER TABLE 查询运行了两天多了,但还没有完成。我现在已经杀了它。
如果我最初将表创建为 MyISAM,写入速度似乎非常差(特别是由于查询需要使用 ON DUPLICATE KEY UPDATE 技术这一事实)。我暂时无法关闭按键。如果我这样做的话,该表将变得超过 1000 倍,然后我必须重新处理键并基本上在 150,000,000,000 行上运行 GROUP BY。嗯,不。
要实现的关键约束之一:如果表中已经存在主键(散列),则 INSERT 查询更新记录。
在尝试严格使用 MyISAM 的最初阶段,我的粗略速度为每秒 1,250 行。一旦指数增长,我想这个比率会下降得更多。
我的机器上安装了 16GB 的内存。生成最终成为磁盘上的索引 MyISAM 表的大型表的最佳方法是什么?
说明:查询中有很多很多更新(INSERT ... ON DUPLICATE KEY UPDATE val=val+whatever)。无论如何,这不是原始转储问题。我首先尝试使用 MEMORY 表的原因是为了加快每次 INSERT 时发生的所有索引查找和表更改。
最佳答案
如果你打算把它变成一个 MyISAM 表,为什么你首先要在内存中创建它?如果只是为了速度,我认为转换为 MyISAM 表将抵消通过在内存中创建它而获得的任何速度改进。
你说直接插入“磁盘上”表太慢(虽然我不确定你是如何决定的,因为你当前的方法需要几天时间),你可以关闭或删除唯一性约束,然后稍后使用 DELETE 查询重新建立唯一性,然后重新启用/添加约束。我过去在导入 INNODB 表时使用过这种技术,发现即使后来删除它总体上也快得多。
另一种选择可能是创建 CSV 文件而不是 INSERT 语句,然后使用 LOAD DATA INFILE 将其加载到表中(我相信这比插入更快,但我目前找不到引用)或通过 CSV storage engine 直接使用它,取决于您的需要。
关于mysql - 生成一个 150M 行的海量 MySQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1586436/
我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看rubyzip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何
我想要做的是有2个不同的Controller,client和test_client。客户端Controller已经构建,我想创建一个test_clientController,我可以使用它来玩弄客户端的UI并根据需要进行调整。我主要是想绕过我在客户端中内置的验证及其对加载数据的管理Controller的依赖。所以我希望test_clientController加载示例数据集,然后呈现客户端Controller的索引View,以便我可以调整客户端UI。就是这样。我在test_clients索引方法中试过这个:classTestClientdefindexrender:template=>
在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',
我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A
如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion为什么SecureRandom.uuid创建一个唯一的字符串?SecureRandom.uuid#=>"35cb4e30-54e1-49f9-b5ce-4134799eb2c0"SecureRandom.uuid方法创建的字符串从不重复?
我有一个正在构建的应用程序,我需要一个模型来创建另一个模型的实例。我希望每辆车都有4个轮胎。汽车模型classCar轮胎模型classTire但是,在make_tires内部有一个错误,如果我为Tire尝试它,则没有用于创建或新建的activerecord方法。当我检查轮胎时,它没有这些方法。我该如何补救?错误是这样的:未定义的方法'create'forActiveRecord::AttributeMethods::Serialization::Tire::Module我测试了两个环境:测试和开发,它们都因相同的错误而失败。 最佳答案
我是Rails的新手,所以请原谅简单的问题。我正在为一家公司创建一个网站。那家公司想在网站上展示它的客户。我想让客户自己管理这个。我正在为“客户”生成一个表格,我想要的三列是:公司名称、公司描述和Logo。对于名称,我使用的是name:string但不确定如何在脚本/生成脚手架终端命令中最好地创建描述列(因为我打算将其设置为文本区域)和图片。我怀疑描述(我想成为一个文本区域)应该仍然是描述:字符串,然后以实际形式进行调整。不确定如何处理图片字段。那么……说来话长:我在脚手架命令中输入什么来生成描述和图片列? 最佳答案 对于“文本”数