- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在编写一些软件,需要将数据从分层格式扁平化为表格格式。我不想每次都用一种编程语言来完成并提供服务,而是想将结果缓存几秒钟,然后使用 SQL 进行排序和过滤。在使用时,我们说的是在那几秒钟内进行 400,000 次写入和 1 或 2 次读取。
每个表格将包含 3 到 15 列。每行将包含 100 字节到 2,000 字节的数据,但在某些情况下,某些行可能会达到 15,000 字节。如有必要,我可以剪辑数据以保持理智。
我正在考虑的主要选项是:
一个不错的选择,几乎是专门为我的用例编写的!但是……“MEMORY 表使用固定长度的行存储格式。可变长度类型(例如 VARCHAR)使用固定长度存储。MEMORY 表不能包含 BLOB 或 TEXT 列。” - 不幸的是,我的文本字段的长度可能最多可达 10,000 个字符 - 即使是这个数字也没有特别限制。当我循环进行展平时,我可以根据文本列的最大长度调整 varchar 长度,但这并不完全优雅。另外,对于我偶尔的 15,000 个字符的行,这是否意味着我需要为数据库中的每一行分配 15,000 个字符?如果有 100,000 行,那就是 1.3 GB,不包括开销!
这是为了在云上运行,我可以轻松地启动具有 16gb 内存的服务器,配置 MySQL 以写入 tmpfs 并使用全功能的 MySQL。我对此的关注是空间。虽然我确定工程师已经编写了内存引擎来防止消耗所有临时存储和服务器崩溃,但我怀疑该解决方案是否知道何时停止。如果采用数据库格式,我的 2,000 字节数据将占用多少实际空间?我如何监控它?
索引事实上,我会提前知道哪些列需要过滤和排序。我可以在插入之前设置一个索引,但是老实说,我可以期望在 ram 磁盘上获得什么样的性能提升?索引增加了多少额外开销?
插入我假设用一个查询插入多行会更快。但是一个查询或一系列大型查询存储在内存中,我们正在写入内存,所以如果我这样做,我会暂时需要双倍的内存。然后我们讨论一次做一个或两个或一百个,并且必须等待它完成才能处理更多...... InnoDB 不会锁定表但我担心发送两个查询彼此太近并且混淆MySQL。这是一个合理的担忧吗?由于表锁,使用 MEMORY 引擎我必须等待完成。
临时除了在数据库连接关闭时临时表被删除之外,临时表还有什么好处吗?
最佳答案
我建议你使用 MyISAM。为您的查询创建具有适当索引的表。然后禁用 key 、加载表并启用 key 。
我建议您为您的系统制定这样的规程。我非常有效地使用了类似的纪律。
保留表格的两份副本。调用一个 table_active
和第二个 table_loading
。
当需要加载数据的新副本时,使用这样的命令。
ALTER TABLE table_loading DISABLE KEYS;
/* do your insertions here, to table_loading */
/* consider using LOAD DATA INFILE if it makes sense. */
ALTER TABLE table_loading ENABLE KEYS; /* this will take a while */
/* at this point, suspend your software that's reading table_active */
RENAME TABLE table_active TO table_old;
RENAME TABLE table_loading TO table_active;
/* now you can resume running your software */
TRUNCATE TABLE table_old;
RENAME TABLE table_old TO table_loading;
或者,您可以DROP TABLE table_old;
并为table_loading
创建一个新表,而不是上次重命名。
这个双表(双缓冲)策略应该工作得很好。它会产生一些延迟,因为您正在读取表格的软件将在旧副本上运行。但是您将避免从未完全加载的表中读取数据。
我建议使用 MyISAM,因为您不会用完 RAM 并崩溃,而且您不会有固定行长的开销或事务开销。但您也可以考虑 MariaDB 和 Aria 存储引擎,它们在利用 RAM 缓冲区方面做得很好。
如果您确实使用 MEMORY 存储引擎,请务必调整您的 max_heap_table_size
系统变量。如果您的读取查询将使用索引范围扫描(顺序索引访问),请务必指定 BTREE 样式索引。看这里:http://dev.mysql.com/doc/refman/5.1/en/memory-storage-engine.html
关于RAMdisk 上的 MySQL 内存引擎与 InnoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17865520/
以下代码: if (!(ep = engOpen("\0"))) { fprintf(stderr, "\nCan't start MATLAB engine\n");
我在谈论一些网络事物,例如 http://uservoice.com/ 你能推荐任何其他类似的服务、网站,或者可能是(甚至更好)一个现成的引擎来部署在自己的服务器上? 实际上,更多关于系统的问题,可以
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我正在寻找一个矩阵表达式解析器/引擎。例如, 3 * A + B * C 其中 A、B、C 是矩阵是一个典型的表达式。这应该类似于(单值)数学表达式解析器/引擎,但应该处理矩阵值和变量。我已经用谷歌搜
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 5年前关闭。 Improve this qu
是否有基于 .net 的 cometd 引擎?比如 Ajax 推送引擎 那是免费和开源的吗? 最佳答案 轨道式 Orbited是一个 HTTP 守护进程,针对长期 cometd 连接进行了优化。它旨在
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我正在寻找支持以下功能的 haml javascript“端口”: 存储在文件中的模板。 JSON 输入。 支持“集合”[{Booking},{Booking},{Booking}] 进行迭代处理。
我在 IronPython 中托管 IronPython。我没有找到使用等效的命令行参数初始化它的方法:-X:FullFrames . 我的代码有点像这样: import clr clr.AddRef
我想将我工作的公司的所有松散信息整合到一个知识库中。 Wiki 似乎是一种可行的方法,但大部分相关信息都隐藏在 PST 文件中,并且需要很长时间才能说服人们将他们的电子邮件(包括附件)手动翻译成 Wi
我已经使用缓存的 flutter 引擎 flutter 到现有的 native 应用程序(添加到应用程序)中。 override fun onCreate(savedInstanceState: Bu
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我正在使用 Django Cassandra我已经定义了我的模型,我可以用它来命名一个表: class Meta: db_table = "table_name" 但是,Cassand
类似于 NoSQL 数据库,但适用于 OLAP。当然是开源的:) 编辑: OLAP 引擎在幕后使用关系数据库。例如 SAPBW 可以使用 Oracle 等。我的意思是一个没有这个底层关系数据库的 OL
我正在使用以下片段来 enable Razor templating in my solution (在 ASP.NET MVC3 之外)。是否可以轻松实现布局? 背景资料: 我在这一点上(模板编译成
我们目前使用闭源知识库解决方案,所见即所得创建文章是TinyMCE(看起来可能是修改/简化的)。 他们目前根本不允许更改它(添加插件等,除非您可以以某种方式注入(inject)插件)。 我确实拥有对
我正在评估我们的高性能电信应用程序的 BPEL 引擎,但性能似乎很差。我们评估了 Apache Ode、SunBPEL 引擎、Active BPEL 等。您知道任何更快的 BPEL 引擎实现或 C/C
Elastic / Lucene真的需要在文档中存储所有索引数据吗?您难道不就通过通过传递数据,以便Lucene may index the words into its hash table并为每个
我是 3D 游戏新手?我正在使用 Libgdx。如何计算像 Tetromino Revolution 游戏这样的透视相机的参数?请给我任何想法。 看图片:http://www.terminalstud
我是一名优秀的程序员,十分优秀!