测试 Rocket.Chat 和 Zulip

MariaDB 基金会正在公开测试两个新的通讯工具 Rocket.Chat 和 Zulip,我们正在评估它们是否能满足我们的部分要求。

大致按照重要性排序

1) 开源
2) 功能类似于专有软件 Slack 的工具。
3) 用于内部员工聊天的工具,取代目前使用的一些专有方案。
4) 具有良好托管解决方案的工具,这样我们就无需担心托管和维护问题。
5) 取代/增强 IRC 的工具(最好有良好的集成)。
6) 主要用于内部使用的专有语音和视频通话渠道的替代方案。…

决斗:gdb 对战 链表、树和哈希表

我第一次接触 gdb 命令 duel 是在大约 15 年前的一些旧 IRIX 系统上。我立刻喜欢上了它在 MySQL 调试期间显示各种数据结构的便利性,并希望 Linux 也有类似的东西。后来我发现 Duel 并非 IRIX 特有的,而是 Michael Golan 在 93 年编写的 gdb 4.6 的一个公共领域补丁。不幸的是,它从未被纳入 gdb(我听说是因为许可原因)。现在 gdb 8 已经发布,显然这个补丁不再适用。我没有修复这个补丁,而是使用 gdb Python APIArpeggio 解析器用 Python 重新实现了 Duel。…

使用 gdb PrettyPrinting API 让生活更美好

任何浏览过 gdb 手册的人都知道 gdb 有某种 Python API。任何粗略看过的人都会看到一个叫做“Pretty Printing”的东西,据说它告诉 gdb 如何以一种美观易读的方式打印复杂的数据结构。好吧,至少我看到过,但从未多加思考。然而,有一天,当我输入
(gdb) p/t table->read_set->bitmap[0] @ (table->read_set->n_bits+7)/8
一遍又一遍时,我问自己,“为什么不呢?”,于是就开始了…
(更多...)

开发者会议与社区聚会总结

MariaDB 10.1 于几天前发布,现在是时候关注另一个重要活动了。上周我们举行了一个为期三天的 MariaDB 开发者会议。会议在阿姆斯特丹举行 (10月13-15日)。这样的会议通常对产品的路线图产生重大影响。Booking.com 非常慷慨地为开发者会议提供了场地。

谢谢 Booking.com!

开发者会议前一天,在阿姆斯特丹的 eBay 办公室举行了一场 MySQL 聚会,因为自然地,许多 MariaDB 开发者已经因开发者会议来到这座城市。

MariaDB 10.1.1: RBR 的触发器

有时用户会提出一些看似没有意义的需求。乍一看确实如此。但当你开始询问并深入了解时,你会意识到用户是对的,你错了,而且这实际上是一个完全符合逻辑且有效的用例。

当我听说有人要求让触发器在基于行的复制 (RBR) 的从库上工作时,我经历过这种时刻。真的吗?在 RBR 中,触发器所做的所有更改都会作为行事件从主库复制到从库。如果触发器在从库上触发,它们会重复执行更改。而且,无论如何,假设只有在从库上才有触发器(为什么?),在基于语句的复制中,触发器不是会在从库上正常运行吗?…

MariaDB 10.1.1: engine_condition_pushdown 标志已弃用

让我先讲个小故事。你坐在家里的壁炉旁边的客厅里,需要图书馆里的一本书……呃,不对,抱歉,搞错了世纪。你正在建造一个机械臂,它可以为你开啤酒或煮咖啡,或者提供你选择的任何其他饮料……而你正在建造下一个机械臂。所以,你——一手拿着烙铁,一手拿着 Arduino——让你的小弟弟从地下室拿一盒特定的电阻器(你意外用完了)。问题是——你的弟弟很小,分不清电阻器和呼吸器。…

MariaDB 10.1.1: 系统变量及其元数据

我想如果我说 MariaDB 或 MySQL 服务器对系统变量的了解远不止它们的值,没有人会感到惊讶。事实上,每个变量都可以是会话级或全局级,只读或可写,它都有相关的帮助文本(在使用 mysqld –help –verbose 时会打印出来),某些变量只接受给定字符串集合中的值(从 MariaDB 10.1.0 开始,这组允许的值也会在使用 mysqld –help –verbose 时打印出来),数值变量有有效值的上下限范围(这些从未在任何地方打印过),等等。我一直觉得没有办法查询这些信息有点浪费。…

MariaDB 10.1.1: InnoDB 表空间中未使用空间的碎片整理

引言

例如,当你删除行时,这些行只是被标记为已删除,实际上并未从索引中物理删除,并且释放的空间也不会返回给操作系统以供后续重用。清理线程会物理删除索引键和行,但释放的空间仍未返回给操作系统,并且此操作可能导致页面上出现空洞。如果你有可变长度行,这可能会导致无法将此释放空间用于新行的情况(如果这些行大于旧行)。用户可以使用 OPTIMIZE TABLE 或 ALTER TABLE <table> …