MariaDB 10.1.1: engine_condition_pushdown 标志已弃用

让我从一个小故事开始。 你坐在客厅壁炉旁的房子里,需要从图书馆拿一本书……呃,不,对不起,弄错世纪了。 你正在构建一个机器人手臂,它可以打开你的啤酒或冲泡你的咖啡,或为你提供你选择的任何其他饮料……而你将构建下一个机器人手臂。 因此,你——一只手拿着烙铁,另一只手拿着 Arduino——让你弟弟从地下室拿一盒特定的电阻(你出乎意料地用完了)。 问题——你的弟弟很小,无法区分电阻和呼吸器。 …

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

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

MariaDB 10.1.1:对 InnoDB 表空间上未使用的空间进行碎片整理

简介

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

MariaDB 10.1.1: 监控 InnoDB 中在线 DDL 的进度和临时内存使用情况

简介

在线 DDL 是 MariaDB 10.0 中的一项新功能。在线 DDL 通过以下 4 个任务按顺序处理。

  1. InnoDB::ha_prepare_inplace_alter_table(..)
  2. InnoDB::ha_inplace_alter_table(..)
  3. InnoDB::ha_commit_inplace_alter_table(..)
  4. mysql_rename_table(..)

InnoDB 存储引擎在第 1 阶段分配临时内存缓冲区用于事务日志记录,其中记录了此阶段的行更改。此缓冲区的大小在开始时为 sort_buffer_size,并且可以增长到 innodb_online_alter_log_max 大小。在第 2 阶段,处理 ALTER 语句的线程会将旧表的行复制到新的已更改表中。此后,MariaDB 将为目标表获取独占锁,并将行日志缓冲区应用于新的已更改表。 …

MariaDB 10.1.1:插件的 FLUSH 和 SHOW

在 MariaDB 和 MySQL 中,最流行的插件类型之一是 INFORMATION_SCHEMA 插件类型。INFORMATION_SCHEMA 插件向 INFORMATION_SCHEMA 添加新表。有很多 INFORMATION_SCHEMA 插件,因为它们可以用来向用户显示任何内容,并且非常容易编写。

MariaDB 10.1.1 附带九个 INFORMATION_SCHEMA 插件

  • Feedback — 显示匿名化的服务器使用信息,并且可以选择将其发送到配置的 URL。
  • Locales — 列出编译到服务器中的区域设置,由 Roberto Spadim 实现
  • METADATA_LOCK_INFO — 列出服务器中的元数据锁。

在 Percona Live London 认识 MariaDB 团队的成员

MariaDB 团队将在 Percona Live London 上进行以下演示

在那几天,我们也会参加社区聚会,并出现在会议的各个角落。别忘了,如果您还没有注册,可以使用折扣码 ‘PLUK14CC’ 享受 20 英镑的折扣。

MariaDB 10.1.1:复合语句

有时需要有条件地执行某些 SQL 语句。 如果您从 PHP(或 Java 或任何其他)应用程序执行此操作,则很容易。 但是,如果您只有纯 SQL 呢? MariaDB 和 MySQL 在 mysql_fix_privilege_tables.sql 脚本(由 mysql_upgrade 工具应用)中使用两种技术。

  1. 创建一个在其中包含 IF 语句的存储过程,调用一次然后删除它。 这要求用户具有 CREATE ROUTINE 权限,并且 mysql.proc 表必须存在且可用(这不一定是真的——我们正在从 mysql_upgrade 中执行它,对吧?)。
  2. 使用动态 SQL,例如
    SET @str = IF (@have_csv = ‘YES’,
    ‘CREATE TABLE IF NOT EXISTS general_log (
    event_time TIMESTAMP(6) NOT NULL,
    user_host MEDIUMTEXT NOT NULL,
    thread_id BIGINT(21) UNSIGNED NOT NULL,
    server_id INTEGER UNSIGNED NOT NULL,
    command_type VARCHAR(64) NOT NULL,
    argument MEDIUMTEXT NOT NULL
    ) engine=CSV CHARACTER SET utf8 comment=”General log”‘,
    ‘SET @dummy = 0’);

MariaDB 10.1.1:performance_schema 表不再需要 .frm 文件

是的!在 MariaDB 10.1.1 中,PERFORMANCE_SCHEMA 中的表不使用 .frm 文件。 这些文件不会被创建,也不会被读取——事实上,PERFORMANCE_SCHEMA 表根本不会触及磁盘。

这成为可能的原因是 MariaDB 的一个不太为人所知的功能——新的表发现(“旧的表发现”已在 2004 年在 MySQL 中为 NDB 集群实现),在 MariaDB 10.0.2 中实现。 MariaDB 不再读取和解析 .frm 文件,而是简单地询问 PERFORMANCE_SCHEMA 表,它具有什么结构,并且由于这些表始终具有固定的结构,因此该表直接将其返回给 MariaDB,而无需任何外部数据字典。 …