问题标签 [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.
tokudb - 在mysql(tokudb)中的表中插入/替换10-20百万条记录的更好方法是什么
数据结构 :
主表(5亿):
创建表
USER_DETAILS
(
visitor_id
varchar(50) 默认为空,partition_id INT,
related_text 长文本,
creation_date
时间戳 DEFAULT CURRENT_TIMESTAMP,主键 (
visitor_id
,partition_id) )引擎=TokuDB
按列表分区(partition_id)(
(0) 引擎 = TokuDB 中的分区 p0 值,
(1) ENGINE = TokuDB 中的分区 p1 值,
(2) ENGINE = TokuDB 中的分区 p2 值,
(3) ENGINE = TokuDB 中的分区 p3 值,
(4) ENGINE = TokuDB 中的分区 p4 值,
(5) ENGINE = TokuDB 中的分区 p5 值,
(6) ENGINE = TokuDB 中的分区 p6 值,
(7) ENGINE = TokuDB 中的分区 p7 值,
(8) ENGINE = TokuDB 中的分区 p8 值,
(9) ENGINE = TokuDB 中的分区 p9 值;
中间表(10-20 百万):
创建表
USER_DETAILS_INTERMEDIATE
(
id
bigint(20) NOT NULL AUTO_INCREMENT,visitor_id` varchar(50) DEFAULT NULL,
partition_id
int(11) 默认空值,
related_text
长文本,主键(id
));
问题 :
当我将数据从中间表传输到主表时花费了太多时间。
我尝试了以下解决方案:
解决方案1:
替换成 USER_DETAILS(visitor_id,partition_id,json_list)
选择 visitor_id ,partition_id ,related_text
FROM USER_DETAILS_INTERMEDIATE
解决方案 2(在循环中运行以下语句:每个循环 10000 行):
替换成 USER_DETAILS(visitor_id,partition_id,json_list)
选择 visitor_id ,partition_id ,related_text
FROM USER_DETAILS_INTERMEDIATE
WHERE id 在 var_min_id 和 var_max_id 之间;
以上查询都需要时间。
有没有另一种方法来改善这个..?
mysql - 如何在 Percona 中使用 XtraDB 和 TokuDB?
经过几次尝试,我终于在我的 Macbook 上使用 Homebrew 安装了 Percona,并通过 MySQL Workbench 成功连接到它,但是当我想创建 XtraDB 表时:
TokuDB 也有同样的错误。
我读过 Percona 支持 XtraDB 和 TokuDB 以及 InnoDB。我应该在某处激活主题吗?!
mysql - TokuDB:插入选择...情况表锁定
我正在运行 2 个并发语句:
- 插入 tab2 select * from tab1 where ....; -- tab1 是一个分区的 tokudb 表
- 插入 tab1 值(...);
tab1 获取表锁,第二次插入正在等待“Waiting for table level lock”
有任何想法吗?
谢谢,
mysql - 错误的子查询在少数情况下工作而在其他情况下失败?
以下两个查询完全相同,除了国家名称。在查询 1 中是“马来西亚”,在查询 2 中是“印度”。
查询本身是错误的;由于我ac.country
在第一个子查询中使用“”,而我实际上需要使用“ ass.country
”,但我仍然在查询 1 中得到结果,而在查询 2 中得到 NULL。
有人可以解释为什么会这样。
查询一:
查询 2:
注意:我还想补充一点,不同版本的 MySql 的输出会有所不同。
mysql - TokuDB 并发插入导致锁超时
在 TokuDB 7.5 上,我有并发批量插入,每批大约 1000 条记录。每个批量更新都在单个事务中完成。该表还包含大约 1 亿条记录。
问题是它不时抛出以下异常。
java.sql.BatchUpdateException:超过锁定等待超时;尝试重启事务
使用的事务隔离级别是Repeatable_Read,我在一篇文章中读到使用Repeatable_Read 会导致SELECT 查询的间隙锁。
但目前我们只有 INSERTS。
这个锁超时可能是由于间隙锁造成的,如果是这样,并发 INSERTS 如何受到间隙锁的影响?
架构
)
linux - MariaBD + Fedora 24 + TokuDB
似乎 TokuDB 在 Fedora 24 + MariaDB 10.1.17 中不可用。
我安装了 jemalloc 和 jemalloc-devel
我的/etc/my.cnf/tokudb.cnf
此外,SELinux 在 /etc/selinux/config 中被禁用
mysql - 如何使用 tokudb 每秒执行超过 50.000 次插入?
目前我正在测试 TokuDB,我印象非常深刻。此时,每秒插入量已达到峰值,每秒超过 50.000 次,同时运行了两个作业。平均插入速率在每秒 38.000 到 42.000 次插入之间。
我想要更高,每秒 100.000 次插入,因为我现在需要插入 12 亿计算行,在不久的将来需要插入大约 60 亿行。我想就如何实现这一点提出一些建议:-)
我目前的设置:
- 硬件:VPS,4GB RAM,150GB SSD,2 核:Intel Westmere E56xx/L56xx/X56xx (Nehalem-C) 2.59GHz CPU
- 磁盘挂载选项:默认值、noatime
- 操作系统:CentOS 6.8 64bit
- 数据库:Percona 服务器 5.7.14-8
My.cnf 设置:
TokuDB 表布局:
我知道我没有使用除主键索引之外的任何索引。这是由于密钥对插入的负面时间影响。将在插入作业结束时为每个表创建一个集群键。
附加的 MySQL 命令行选项:
不知何故,我无法在 my.cnf 中得到它。如果有人知道如何做到这一点,将不胜感激(当前 unique_checks = off 将阻止 MySQL 启动,因为 my.cnf 中有一个未知变量)。
SQL 语句以 15.000 条为一组进行分组。PHP 脚本生成 SQL 语句并通过 mysqli_multiquery 将查询发送到 MySQL 服务器:
SQL插入语句示例:
mysql - 我有一个没有 PRIMARY KEY 的表,但是有一个 UNIQUE KEY,我应该将它设置为 PRIMARY 吗?
我创建了一个新表来存储 20 Giga 的数据,我在设置索引时弄错了。事实上,我所有的索引都很好,其中一个是 3 列之间的 UNIQUE KEY。通常这个键应该是主键。
我估计了修改表格的时间成本。而且我买不起,需要一天时间。
我的问题是:将我的 UNIQUE KEY 更改为 PRIMARY 真的有用吗?
我会有更好的表现吗?
现在我必须解释一些请求使用的索引,因为引擎(TokuDB)选择了坏的,性能显着下降。
就个人而言,我真的不认为它会改变什么,除了桌子设计得很糟糕。
mysql - 使用 binlog 的 tokudb 插入速度比 innodb 慢?
在我们的基准测试中,仅 TokuDB 就击败了 InnoDB 约 25%,但当我在 InnoDB 上启用主从时,现在击败 TokuDB 约 20%
知道发生了什么
这是在 r4.8xlarge aws 机器上运行的 conf
mariadb - tokuDb 设置语句超时的时间
在带有 tokuDb 引擎的 mariadb 表中;我遇到以下错误 - 在删除语句中;虽然有后台插入负载,反之亦然。
Lock wait timeout exceeded; try restarting transaction
tokuDb 用户是否可以更新设置以确定它在语句超时之前等待多长时间?
我在 tokuDb 文档中找不到答案。maria 变量仍然是它的默认值:'lock_wait_timeout'、'31536000'——但我的超时时间在不到一年的时间里又回来了。负载测试期间出现超时;而且我没有在错误中发现时间值 - 但感觉就像几秒钟;在引发超时之前最多几分钟。
谢谢,布伦特