【问题标题】:No merge tables in MariaDB - options for very large tables?MariaDB 中没有合并表 - 非常大的表的选项?
【发布时间】:2014-09-09 18:24:42
【问题描述】:

多年来我一直在愉快地使用 MySQl,并且对 MariahDB 分支感兴趣。

我的一个项目的服务器即将报废,需要重新托管 - 可能是 CentOS 7,其中包括 MariahDB

我担心的一个问题是缺少我广泛使用的合并表功能。我们有一个非常大的(至少按照我的标准)数据集,大约有 100M 记录/20 GB(大多数数据被压缩)并且还在增长。我已将其拆分为按数据时代组织的只读压缩 myisam“存档”表,以及用于当前数据和插入的常规 myisam 表。然后我用一个合并表跨越所有这些。

然后编写针对此数据库的软件,以便确定从哪个表中检索相关时间跨度的数据,如果时间跨度跨越多个表,它会查询覆盖的合并表。

这为我做了几件事:

  • 对于较小的表,查询要快得多 - 不幸的是,最典型的查询所需的索引以及防止重复记录相对复杂
  • 当查询跨越多个表时,用户不必查询多个表并组合结果
  • 允许 > 90% 的数据驻留在压缩表中可以节省大量磁盘空间
  • 我可以备份存档表一次 - 这可以节省大量时间、带宽和存储空间

关于如何在不合并表的情况下处理此问题的建议?是否有任何其他表类型提供 myisam 提供的压缩只读选项?

我认为我们可能不得不使用单独的表,并忍受额外的复杂性并更改使用该数据库的多个项目中的所有代码。

【问题讨论】:

    标签: merge myisam mariadb


    【解决方案1】:

    MariaDB 10 引入了 CONNECT storage engine,它做了很多不同的事情。它提供的表类型之一是TBL,它基本上是 MERGE 表类型的扩展。 TBL CONNECT 类型当前是只读的,但您应该能够根据需要插入到基表中。这可能是你最好的选择,但我对 CONNECT 引擎不是很熟悉,你需要做一些实验来决定它是否可以工作。

    【讨论】:

    • 谢谢 - 我正在调查。看起来 MariahDB 可能确实处理了 myisam 合并表 - 只是不合并新存储引擎的表。希望尽快启动测试服务器进行试用。
    猜你喜欢
    • 2016-08-24
    • 2018-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-31
    • 1970-01-01
    • 2019-02-13
    • 2020-03-19
    相关资源
    最近更新 更多