有没有办法直接访问 MariaDB 或 MySQL 表索引?

Posted

技术标签:

【中文标题】有没有办法直接访问 MariaDB 或 MySQL 表索引?【英文标题】:Is there a way to directly access a MariaDB or MySQL table index? 【发布时间】:2014-03-02 21:07:41 【问题描述】:

最近几个月我在某处读到,有一个与 mysql 或 MariaDB 集成的项目允许直接索引访问作为性能优化。

具体来说,某种界面可以让您直接说出以下内容:

“给我这个索引列与 BLAH 匹配的记录的 ID”或 “此特定索引中是否存在此值的 ID”

...并允许您绕过 SQL 查询解析、规划等步骤,从而为速度敏感的操作获得更高的吞吐量。

我似乎无法通过谷歌搜索找到它。任何熟悉这样做的项目的人?只是寻找任何做这种事情的开源的链接。 (我专门处理 MySQL [或其衍生产品之一],但其他开源项目也可能是相关的。)

背景信息:

我已经准备好在 highscalability.com 和其他商店从传统 RDBMS 转向 NoSQL 风格的解决方案(或决定在新项目开始时使用 NoSQL),但后来后悔并发现NoSQL 的优点并没有超过必须围绕不支持 SQL 灵活性的存储平台构建某些东西的缺点(基本上:在代码中手动编写连接是一种痛苦,而不是能够轻松地查询那些东西)。我本可以发誓我会阅读一些关于人们使用“传统”RDBMS 的信息,然后将原始索引直接公开给那些真正需要高性能的特定情况,作为一种潜在的解决方案。但是在四处搜索时,我对此并没有看到太多。所以这个问题。

【问题讨论】:

为什么你认为SELECT id FROM table WHERE col = 'value' 不能满足你? 【参考方案1】:

您可能会想到HandlerSocket in MariaDB 或HandlerSocket in Percona Server 或InnoDB Memcached API in MySQL 5.6。但实际上,您不应轻易使用其中一种解决方案。它们可能对选择数量的应用程序和用途很有用,这些应用程序和用途的差异既明显又有益,而对于整个世界的大多数人来说,你只是让你的生活变得更加困难,并通过使用它们来寻找奇怪的错误。小心行事。

【讨论】:

看起来就是这样。我正在考虑的场景是用于统计数据和其他分析信息的数据仓库。我需要 RDBMS 的灵活性,但同时我预测,对于一些性能关键的查询,我需要额外的能力来让查询解析器和有线协议开销尽可能地避开我的方式 - 为了加快速度。我必须对其进行测试,但似乎这可以提供另一种选择——但正如你所说——只有在有保证的情况下。感谢您的链接,我同意谨慎。 我想你可能会感到惊讶。如果 MySQL 是可以通过 HandlerSocket 或 Memcached 接口完成的简单类型,那么 MySQL 在单台机器上每秒可以处理数万次查询。

以上是关于有没有办法直接访问 MariaDB 或 MySQL 表索引?的主要内容,如果未能解决你的问题,请参考以下文章

MariaDB(mysql)远程访问设置

MySQL(MariaDB)的 SSL 加密复制

是否可以直接从 Javascript 访问 MySQL 数据库

全网最详细的CentOS7里安装MySQL时出现No package mysql-server available错误的解决办法(图文详解)

将 Hypersonic DB 迁移到 MySQL/MariaDB

有没有办法从getter或setter直接访问属性的属性?