问题标签 [tokudb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
685 浏览

mysql - ASC 与 DESC 之间的 TokuDB 排序时间不同

这是从 Tokutek 下载的 MariaDB + TokuDB 7.1 社区。如果这是正常行为,请接受我的无知,但我对排序结果有疑问。我在两个排序方向之间的排序时遇到了巨大的时间差异 - 升序和降序:

下面我介绍我的简化测试用例。这是表格:

在这里,我使用以下过程填充了 200 万行的表:

这是我的测试查询:

这是“解释扩展”结果,这两个查询是相同的:

请注意,这不是我正在使用的确切数据,此处包含的内容过多。我只是想创建一些测试数据来演示这个问题。我的问题是 - 为什么它会这样以及如何使降序查询更快?

0 投票
3 回答
4483 浏览

mysql - 为什么 TokuDB 和 InnoDB 插入比 MyISAM 慢

我准备了以下 SQL 语句来比较 MyISAM、InnoDB 和 TokuDB 的性能行为(INSERT 执行了 100000 次):

MyISAM:

InnoDB:

托库数据库:

一开始,InnoDB 的 INSERT 性能几乎比 MyISAM 慢 50 倍,TokuDB 比 MyISAM 慢 40 倍。

然后我找出 InnoDB 上“innodb-flush-log-at-trx-commit=2”的设置,使其 INSERT 行为与 MyISAM 相似。

问题是,我应该在 TokuDB 上做什么?我敢打赌 TokuDB 的 INSERT 性能不佳也是由一些不正确的设置引起的,但我不知道原因。

- - - - - 更新 - - - - -

感谢 tmcallaghan 的评论,我已将设置修改为“tokudb_commit_sync=OFF”,现在 TokuDB 在小数据集上的插入率似乎很有意义(一旦我发现以下问题,我将在大数据集上执行它们):

然而,与 MyISAM 和 InnoDB 相比,TokuDB 的选择性能仍然是有线的,具有以下 SQL(其中 ? 被我的模拟器替换为不同的 Int ):

对于一百万个数据集,MyISAM 和 InnoDB 分别花费 10k 和 15 秒的每 10k SELECT 语句,但 TokuDB 需要大约 40 秒。

我错过了其他一些设置吗?

提前致谢!

0 投票
3 回答
97 浏览

mysql - SQL语句联接三张表

我有以下声明

返回结果如下

正如您从结果中看到的那样,有重复的行,我想消除其中的一个,如果table仪器有更多行要返回,那么我只想要一个。

实现这一目标的正确说法是什么?

提前致谢

0 投票
2 回答
6345 浏览

mysql - 如何处理 MySQL 数据库中的大量数据?

背景

我花了几天时间试图弄清楚我应该如何在 MySQL 中处理大量数据。我为该软件的新服务器选择了一些程序和技术。我可能会使用运行 nginx、Percona Server的 Ubuntu 14.04LTS,并将对我计划的 3 个表使用 TokuDB,对其余表使用InnoDB 。

但我的主要问题仍未解决。如何处理数据库中的海量数据?

数据

我对可能接收的数据的估计是每年 5 亿行。我将每4 分钟从传感器接收一次测量数据。

要求

插入速度不是很关键,但我希望能够在 1-2 秒内选择几百个测量值。所需资源的数量也是一个关键因素。

当前计划

现在我考虑将传感器数据拆分为 3 个表。

编辑:在每张桌子上:

id = PK, AI

sensor_id 将被索引

所以我会将这4 分钟的数据存储一个月。数据 1 个月大后,将从分钟表中删除。然后平均值将从分钟值计算并插入到测量小时表中。然后,当数据存在 1 年时,所有小时数据都将被删除,每日平均值将存储在 measurement_day 表中。

问题

这被认为是这样做的好方法吗?还有什么需要考虑的吗?表分区怎么样,我应该这样做吗?我应该如何执行将日期拆分为不同的表?触发器和程序?

编辑:我的想法

知道MonetDBInfobright是否对此有用吗?

0 投票
1 回答
654 浏览

mysql - 从 TokuDB 查询创建临时表太慢

我在一台服务器上有这张表:

和同一张表,但在另一个类似的服务器中使用 MyISAM 引擎。

当我执行此查询时:

该表有 1.2 亿行。使用 TokuDB 的服务器在 3 小时内执行查询……使用 MyISAM 的服务器在 22 分钟内执行。

使用 TokuDB 的查询显示“查询大约 38230000 行,获取大约 303929 行,加载数据仍然存在”状态。

为什么 TokuDB 查询持续时间这么长?TokuDB 是一个非常好的引擎,但我不知道这个查询我做错了什么

服务器使用的是 MariaDB 5.5.38 服务器

0 投票
3 回答
2473 浏览

mysql - mysql_query() keeps running after php exits

I've noticed that if I execute a long running mysql query with php using mysql_query() (I know I'm not supposed to use that) and then the php process gets killed then the query continues to run on the mysql server. This is not a persistent connection. The connection is made with:

For example, let's say I have a 1 billion row table and a php process does this for some reason:

And then it times out (say because I'm running php-fpm with request_terminate_timeout=5), so it kills the process after 5 seconds to make sure it doesn't hog things.

Eventhough the process is killed, the query still runs on mysql even far after wait_timeout.

Is there anyway to make sure that if the php process exits for whatever reason it also kills any running queries that it made?

I'm using tokudb 5.5.38-tokudb-7.1.7-e which is mysql 5.5.38

0 投票
1 回答
379 浏览

database - Tokudb 和分形树索引

我对在我的表格中使用分形树索引有疑问。我创建了指定 TokuDB 引擎的表

文档说:“TokuDB 使用一种称为分形树的特殊数据结构,它针对不完全适合内存的数据进行了优化。”

但是如果我执行这个查询

为我的表检索的所有索引都有 index_type = BTREE

所以…………这对吗?

0 投票
1 回答
378 浏览

mysql - GROUP BY WHERE 范围和没有临时的 const ref

一个非常基本的表格,其中包含利用 TokuDB 存储引擎跨多个交易所的工具报价:

每当我在所有交易所查询最佳价格时,它总是使用一个临时表。exchange索引中的and的存在price似乎只产生一个索引扫描,相当于(ticker, timestamp)TokuDB 中的聚集键。

是否可以定义不使用临时表的配置?timestamp这只有在删除文章时才可能出现:

最佳价格查询的示例输出:

瓶颈(3ms)正在处理时间范围内的每一行:

时间范围包含 2316 行,按交换细分:

我已经尝试过疯狂并添加了覆盖索引的所有排列,而 MariaDB 找不到更好的键。我应该查看其他数据库吗?

时间范围和股票代码的示例数据集:http: //pastebin.com/b5RcTXA

0 投票
1 回答
79 浏览

php - 重复条目 Mysql TokuDB 与许多客户端

我有一个奇怪的情况。假设我在 php 中有一个非常简单的函数(我使用了 Yii,但问题很普遍),它在事务语句中被调用:

也就是说,如果我通过盯着许多进程来运行包含此函数的脚本,我将在数据库中有重复的值。例如,如果我有 $someKey='pippo',并且我通过启动 2 个进程来运行脚本,我将有两个(或更多)列“someCol”=“newOne”的记录。这是随机发生的,并非总是如此。代码错了吗?我应该以 KEY 的形式在 DB 中设置一些约束吗?我还阅读了这篇关于向 TokuDB 添加 UNIQUE 索引的帖子,其中说 UNIQUE KEY “杀死”了写入性能......

0 投票
1 回答
69 浏览

mysql - Mysql 不返回数据但有数据

今天很奇怪的问题。像基本数学一样简单的查询:

但是这个让我抓狂:

也就是说:尽管数据就在那里,但选择不会返回任何数据。这是与集群键相关的问题吗?我的桌子: