(十二)MariaDB中的分区 *** 作

(十二)MariaDB中的分区 *** 作,第1张

数据量不大的中小型规模 size 的 Table 原则是还是采用 Table+Index 设计为最佳化的思考重点。

在大数据考虑数据分片的时候,有两点也是重点:

一是空间,数据存放的存储空间是否足够,易于扩展。

二是时间,对于数据存取是否有限制,能否优化。

此外就是:

对于 MyISAM 引擎,可以设计分离数据文件和索引文件来加快数据存取。例如:

当然,InnoDB 采用 System TableSpace 集中存放,无法支持此种方式,需要通过设定去转换成一个 table 一个 file。

MariaDB 10 提供 Table 分区储存功能,大量数据切割成不同储存区域(Partition),Partiton 底层的档案可再切成多档方式储存(Sub-Partition)。

使用 Plugin 方式扩充

由 Storage Engine 自行实作,MariaDB 已支持的包括 InnoDB, TokuDB , Memory, Aria, Spider、MyISAM, Archive, BLACKHOLE

MySQL 仅支援 InnoDB

MariaDB 透过内建的 Partiton Storage Engine 提供此项分区服务

查看是否有安装此引擎:

系统管理方式与一般 tables 相同,System Partition 提供元数据(Metadata): Informaton_Schema.PARTITIONS 。

分区作业时,有些东西还需要特别考虑,例如分区类型、分区计算、目标表的形态、分区前后的应用等等。

MariaDB 的分区类型主要有:

语法:

CREATE TABLE 语句的最后一部分可以是新表分区的定义。对于 RANGE 分区

说明:

示例:

通过年份对日志表进行分区

注意:

如果 partitioning_expression 表达式引用的字段不是,就会出现以下错误:

语法:

说明:

示例:

依据文章语言分类,所有可能的筛选值必须判断,Language 事实上是 Foreign key 对应到 Language Table(所以用 id 表示),Partition table 不支持 Fkey,Language 必须是 正整数或 null。

字段型别:

Integer ( 不可产生负数 )、Date, DateTime、CHAR, VARCHAR, BINARY , VARBINARY、不可使用任何 functions, 运算子符号 (只能单纯使用字段…)

语法:

RANGE COLUMNS 分区类型:

LIST COLUMNS 分区类型:

两者的区别:

RANGE COLUMNS 是返回的值小于指定的值,第一个匹配条件的分区将包含该值;

LIST COLUMNS 返回的值包含在给定的值里面,同样允许且仅运行一个 DEFAULT 分区。

示例,修改上述 article 表,新加 year 字段:

分割后的 Table 将产生多个个别档案

文件名编码: table_name#P#partition_name.ext

在 InnoDB 下,会有以下 3 类:

以之前的 article 表为例,回顾一下创建语言:

使用 EXPLAIN PARTITIONS 来查看哪些分区会被使用到:

从结果来看,的确在 WHERE language <4的条件下,只有 p0 和 p1 分区会有访问到。

如果优化器不知道或无法推断出哪些分区会被使用到,可以通过 PARTITION 子句强制 MariaDB 仅访问给定分区(MariaDB 10.0 开始),这也被称为 分区选择

例如:

所有 DML 语句均支持 PARTITION 子句:SELECT、INSERT、UPDATE、DELETE、REPLACE、LOAD DATA 等。

通常情况下,分区修剪会用在触发器(triggers)语句中。

但是如果在表上定义了 BEFORE INSERT 或者 BEFORE UPDATE 的触发器,则 MariaDB 不会预先知道分区表达式中使用的字段(column)是否会更改。因此,被迫锁定所有分区。

1、官网下载ubuntu14.04的iso镜像2、重新命名镜像名字为ubuntu.iso并复制镜像到计算机的一个分区下(不要放在子文件夹下)3、打开现在的ubuntu14.04下的/boot/grub/grub.cfg$sudogedit/boot/grub/grub.cfg4、找到grub.cfg文件中的引导菜单配置位置,例如在143行exportlinux_gfx_mode下面,添加如下内容menuentry"installubuntu14.04"{search--set-f/ubuntu.isoloopbackloop/ubuntu.isosetroot=(loop)linux/casper/vmlinuz.efiboot=casperiso-scan/filename=/ubuntu.isoinitrd/casper/initrd.lzboot}5、重新启动计算机,选择installubuntu14.04如果一切正常的话会进入ubuntu的livecd桌面;6、点击桌面的安装Ubuntu14.04LTS进行系统安装。注意事项:一定要重新命名下载下来的ubuntu镜像,放在一个分区的根目录,编辑grub.cfg后不要更新grub。

创建一个新的表,从图表工具栏点击图标“表”和点击画布的任何位置,从模型树添加现有的表到图表,从模型树拖放表到画布。

结合Navicat其它成员,支持同时连接到MySQL、MariaDB、SQLServer、SQLite、Oracle和PostgreSQL数据库。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11536614.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存