首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >mariadb的一些特性(<=10.4)

mariadb的一些特性(<=10.4)

作者头像
保持热爱奔赴山海
发布于 2019-09-17 06:36:54
发布于 2019-09-17 06:36:54
1.3K00
代码可运行
举报
文章被收录于专栏:数据库相关数据库相关
运行总次数:0
代码可运行

最近在看看MariaDB的官网上介绍MariaDB的功能和特性,大致罗列了本人觉得有必要了解下的几个地方:

支持到列级别的压缩

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE `cmp2` (
`id` bigint(20) NOT NULL,
`name` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`));

https://mariadb.com/kb/en/library/storage-engine-independent-column-compression/

支持sequence序列

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE SEQUENCE s1 START WITH 50;

SHOW CREATE SEQUENCE s1\G;
*************************** 1. row ***************************
       Table: t1
Create Table: CREATE SEQUENCE `s1` start with 50 minvalue 1 maxvalue 9223372036854775806
increment by 1 cache 1000 nocycle ENGINE=Aria
CREATE SEQUENCE将创建一个序列,在使用NEXT VALUE FOR sequence_name调用时生成新值。当人们想要更多地控制数字的生成时,它是AUTO INCREMENT的替代品。由于SEQUENCE缓存值(高达CACHE),因此在某些情况下可以比AUTO INCREMENT快得多。另一个好处是可以访问所有使用的序列生成的最后一个值,这解决了LAST_INSERT_ID()的一个限制。

https://mariadb.com/kb/en/library/create-sequence/

Semisync 内置到server中,不再需要install plugin方式安装插件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql [localhost:10404] {root} (test) > show global variables like '%semi%';
+---------------------------------------+--------------+
| Variable_name                         | Value        |
+---------------------------------------+--------------+
| rpl_semi_sync_master_enabled          | OFF          |
| rpl_semi_sync_master_timeout          | 10000        |
| rpl_semi_sync_master_trace_level      | 32           |
| rpl_semi_sync_master_wait_no_slave    | ON           |
| rpl_semi_sync_master_wait_point       | AFTER_COMMIT |
| rpl_semi_sync_slave_delay_master      | OFF          |
| rpl_semi_sync_slave_enabled           | OFF          |
| rpl_semi_sync_slave_kill_conn_timeout | 5            |
| rpl_semi_sync_slave_trace_level       | 32           |
+---------------------------------------+--------------+
9 rows in set (0.001 sec)

可以设置自动终止与空闲事务的连接

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
通过 idle_transaction_timeout,idle_readonly_transaction_timeout 和 idle_write_transaction_timeout 系统变量,
可以在指定的时间段后自动终止与空闲事务的连接。

mysql [localhost:10404] {root} (test) > show global variables like '%idle%transaction%';
+-----------------------------------+-------+
| Variable_name                     | Value |
+-----------------------------------+-------+
| idle_readonly_transaction_timeout | 0     |
| idle_transaction_timeout          | 0     |
| idle_write_transaction_timeout    | 0     |
+-----------------------------------+-------+
3 rows in set (0.001 sec)

支持 system-versioned 表

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
可以查看历史版本数据,贺春旸老师介绍过

https://blog.51cto.com/hcymysql/2121248
https://mariadb.com/kb/en/library/system-versioned-tables/

MariaDB 10.3支持update多表ORDER BY and LIMIT

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
自带了mariabackup 备份工具

mariadb10.3上, 有些独有的功能,例如innodb页面压缩,静态数据加密的功能。这在xtrabackup 上是不支持,只能用 mariabackup
具体的差异如下:
* MariaDB 10.1: With uncompressed and unencrypted MariaDB data, you can use XtraBackup. 
If encryption or compression is used, or when innodb_page_size is set to some value other than 16K it will not work.

* MariaDB 10.2: You might also want to try to use XtraBackup, but be aware that problems are likely due to the MySQL 5.7 
undo log format incompatibility bug that was fixed in MariaDB 10.2.2. Due to this bug, backups prepared with 
XtraBackup may fail to recover some transactions. Only if you run the server with the setting innodb_undo_logs=1 
this would not be a problem.

* MariaDB 10.3 and later: This case is more simple. XtraBackup is not compatible.

https://mariadb.com/kb/en/library/mariabackup-overview/
https://blog.51cto.com/hcymysql/2373581?source=dra
https://severalnines.com/blog/database-backups-comparing-mariadb-mariabackup-and-percona-xtrabackup

DDL快速失败

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DDL WAIT and NOWAIT
DDL时候,如果拿不到锁就快速返回失败

https://mariadb.com/kb/en/library/wait-and-nowait/

增加了密码过期策略

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE USER 'monty'@'localhost' PASSWORD EXPIRE INTERVAL 120 DAY;
CREATE USER 'monty'@'localhost' PASSWORD EXPIRE NEVER;

https://mariadb.com/kb/en/library/user-password-expiry/

隐藏列

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE t (x INT, y INT INVISIBLE, z INT INVISIBLE NOT NULL DEFAULT 4);
INSERT INTO t VALUES (1),(2);
INSERT INTO t (x,y) VALUES (3,33);

SELECT * FROM t;
+------+
| x    |
+------+
|    1 |
|    2 |
|    3 |
+------+

SELECT x,y,z FROM t;
+------+------+---+
| x    | y    | z |
+------+------+---+
|    1 | NULL | 4 |
|    2 | NULL | 4 |
|    3 |   33 | 4 |
+------+------++

https://mariadb.com/kb/en/library/invisible-columns/

窗口函数支持

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://mariadb.com/kb/en/window-functions/

支持WITH表达式(CTE)

BLOB和text字段也支持设置默认值

默认会尝试使用原子写入,不支持情况下就改用双写缓冲(目前看是支持宝存的SSD)https://mariadb.com/kb/en/library/atomic-write-support/

对MyRocks引擎的支持

tokudb被拆分为单独的包 mariadb-plugin-tokudb  https://mariadb.com/kb/en/library/tokudb/

mysqlbinlog 支持 flashback参数, 实现DML的闪回  https://mariadb.com/kb/en/library/flashback/

AUTO_INCERMENT 持久化

支持压缩事件以减少二进制日志的大小

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
压缩是完全透明的。事件在写入二进制日志之前在主服务器上压缩,并且在写入中继日志之前由从服务器上的I / O线程解压缩。mysqlbinlog命令同样会为其输出解压缩事件。
当事件具有不可忽略的大小时,压缩将产生最大的影响,因为每个事件都是单独压缩的。例如,插入许多行或大值的批处理INSERT语句,或者在一个查询中触及多个行的基于行的事件。
https://mariadb.com/kb/en/library/compressing-events-to-reduce-size-of-the-binary-log/

binlog_format 在10.2.4后默认是mixed,最好我们还是改成row格式的

增加 JSON数据类型的支持

新增参数 read_binlog_speed_limit 

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
允许限制slave从master读取binlog的速度(腾讯游戏提供code)
在某些情况下,从master读取binlog的速度很快,尤其是在创建新slave的时候,它会给master带来很高的流量。
https://jira.mariadb.org/browse/MDEV-11064
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/04/12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
golang源码分析:go-mysql(4)binlog增量同步
实现binlog增量同步(Incremental dumping)需要哪些步骤呢?获取配置,初始化同步器,找到上一次同步位置,开启同步,并处理解析到的事件,整体流程如下:
golangLeetcode
2023/09/06
1.1K0
golang源码分析:go-mysql(4)binlog增量同步
MySQL运行参数值变更巡检
前段时间阿里云RDS发通知对部分参数进行优化,在割接几天后,研发反馈说每日跑批耗时变长了,也就是说数据库变慢了。
保持热爱奔赴山海
2024/10/14
2370
MySQL 8.0与MariaDB 10.4,谁更易于填坑补锅?
贺春旸,凡普金科DBA团队负责人,《MySQL管理之道:性能调优、高可用与监控》第一、二版作者,曾任职于中国移动飞信、安卓机锋网。致力于MariaDB、MongoDB等开源技术的研究,主要负责数据库性能调优、监控和架构设计。
jeanron100
2019/12/24
2.8K0
MySQL 8.0与MariaDB 10.4,谁更易于填坑补锅?
MySQL 8.0.19 Linux平台安装 Part 2
cat /data/mysql/data/mysql-error.log |grep password
bsbforever
2020/08/18
4620
MySQL 8 复制(二)——半同步复制
直到目前的最新版本为止,MySQL缺省依然使用异步复制策略。简单说所谓异步复制,指的是主库写二进制日志、从库的I/O线程读主库的二进制日志写本地中继日志、从库的SQL线程重放中继日志,这三步操作都是异步进行的。如此选择的主要理由是出于性能考虑,与同步复制相比,异步复制显然更快,同时能承载更高的吞吐量。但异步复制的缺点同样明显,不能保证主从数据实时一致,也无法控制从库的延迟时间,因此它不适于要求主从数据实时同步的场景。例如,为了分解读写压力,同一程序写主库读从库,但要求读到的数据与读主库的相同,异步复制不满足这种强数据一致性需求。异步复制的另一个问题是可能会有数据丢失,例如主库宕机时,已经提交的事务可能还没有传到从库上,如果此时强行主从切换,可能导致新主库上的数据不完整。
用户1148526
2019/05/25
5.5K0
MySQL半同步(四)流程和相关参数
查看大图请移步 https://www.jianshu.com/p/5ebf4f4c1cf8
老叶茶馆
2021/04/22
1.2K0
MySQL半同步(四)流程和相关参数
Linux系统下 MySQL 5.7和8.0 版本安装指南
yum -y remove mariadb-libs-5.5.44-2.el7.centos.x86_64
星哥玩云
2022/08/17
1.1K0
Linux系统下 MySQL 5.7和8.0 版本安装指南
故障分析 | MySQL 从机故障重启后主从同步报错案例分析
现居珠海,主要负责 Oracle、MySQL、mongoDB 和 Redis 维护工作。
爱可生开源社区
2022/04/06
9870
手把手教学-MySQL主从复制架构转换MGR架构(手动版)
在改造之前,我突然想到,现有的架构成为了:node1(master)\node2(slave1) 为MGR, node3(slave2)是node1(master)的从库, 那么检查一下当前三个节点的情况:
老叶茶馆
2020/09/07
1.3K0
MySQL主从复制之增强半同步(无损复制)、延迟复制和并行复制
MySQL有四种同步方式: 1、异步复制(Async Replication) 2、同步复制(sync Replication) 3、半同步复制(Async Replication) 4、增强半同步复制(lossless Semi-Sync Replication)、无损复制
AiDBA宝典
2023/04/26
8K0
MySQL主从复制之增强半同步(无损复制)、延迟复制和并行复制
What's New in MariaDB 10.4
MariaDB 10.4 是其当前的开发分支。 5 月 21 日, 10.4.5 的 RC release 版本发布,距离正式版本发布越来越近。 10.4 的新特性也越来越值得关注。本文总结 mariadb 官方发布一些的博客内容。对应详细信息,可以细读 MariaDB 10.4 的 changelog :https://mariadb.com/kb/en/library/mariadb-1040-changelog/
yzsDBA
2020/10/29
5480
关于Linux下MySql集群(主从/一主多从/主从从)同步部署的一些笔记
对于构建基于MySQL的大规模、高性能应用来讲,需要使用水平扩展(集群)的数据库架构方式。在MySQL内建的复制功能可以实现,通过为服务器配置一个或多个备库的方式来进行数据同步。
山河已无恙
2023/01/30
2.2K0
关于Linux下MySql集群(主从/一主多从/主从从)同步部署的一些笔记
Mysql
为用户授予数据库权限 连接数据库管理系统mysql -u root -p -h localhost -P 3306
Spaceack
2020/11/04
6250
技术分享 | 聊聊 MySQL 关机的故事
这两天看到一个 MySQL 群里在讨论一个有趣的话题,大家平时都是怎么关闭 MySQL 的,一个大佬还发起了一个投票。投票如下:
爱可生开源社区
2022/04/06
3520
MySQL 传统复制与 GTID 复制原理及操作详解
MySQL 复制在业界里有叫:mysql 同步,ab 复制等。专业名称就是叫:复制。
数据和云
2018/07/27
8340
MySQL 传统复制与 GTID 复制原理及操作详解
MySQL半同步复制原理与配置详解
  异步复制(Asynchronous replication),MySQL默认的复制是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理。原理最简单,性能最好,但是主从之间数据不一致的概率很大。
星哥玩云
2022/08/16
6.6K0
MySQL半同步复制原理与配置详解
MySQL Fabric实验(三)HA与Sharding
实验步骤: 1. 安装虚拟机         使用VirtualBox安装四个CentOS release 6.4虚拟机,安装Python 2.6或以上版本,关闭iptables和selinux。虚拟机和网卡说明如下表所示。
用户1148526
2022/05/07
1.2K0
MySQL Fabric实验(三)HA与Sharding
Mysql 主从复制实战(学习笔记十三)
https://www.cnblogs.com/along21/p/8011596.html
用户5760343
2022/05/23
8240
Mysql  主从复制实战(学习笔记十三)
这次终于把MySQL主从复制总结全面了!!!
网络上关于 MySQL 主从复制的文章很多都是讲解如何实现,以及部分实现原理,缺乏对 MySQL 主从复制的全面介绍。例如主从复制的模式(半同步模式和异步同步模式)、同步的原理(binary log+position,GTID)、主从复制的常见问题都缺乏一个全面的总结。
兔云小新LM
2021/05/12
9.4K3
这次终于把MySQL主从复制总结全面了!!!
MySQL-8.0.30 版本新特性之动态调整 REDO
一个好的软件总是让用户的使用体验越来越好,这次 MySQL-8.0.x 的升级有两点改进,都让它更加易用;其一是添加了不可见主键,其二就是 redo 日志大小可以在线调整。
初代庄主
2022/12/19
1.1K0
相关推荐
golang源码分析:go-mysql(4)binlog增量同步
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档