mysql表分区

本文简述了mysql表分区的作用和特点,又演示了mysql表分区的创建过程,详细演示了指定不同分区目录时的处理办法。由于表分区对crud操作是透明的,对于普通开发同学其实不用过多关注,但是本着学习的态度,在分库分表等高大上的技术面前,mysql分区技术依然是一个不可或缺的提升数据库读写能力的关键技术。

1、mysql分区的简单介绍

mysql分区就是将表的数据按照特定规则存放在不同的区域,也就是将表的数据文件分割成多个小块,在查询数据的时候,只要知道数据数据存储在哪些区域,然后直接在对应的区域进行查询,不需要对表数据进行全部的查询,提高查询的性能。同时,如果表数据特别大,一个磁盘磁盘放不下时,我们也可以将数据分配到不同的磁盘去,解决存储瓶颈的问题,利用多个磁盘,也能够提高磁盘的IO效率,提高数据库的性能。

1.1、mysql表分区的特点

  • 物理存储与逻辑分割:逻辑上数据的crud用户感觉不出表分区的存在,物理上数据按照分区键被分配到不同的分区里。
  • 查询性能提升:查询时,mysql能够确定读取那些分区的数据,不用全表扫描。
  • 数据管理与维护:分区可以独立备份、恢复,无需对整表操作。
  • 扩展性与并行处理:当表的大小超过单个存储设备的容量时,很容易扩展到多个存储设备。

1.2、分区的类型

  • RANGE:基于列的值范围将数据分配到不同的分区。比如可以根据日期范围将数据分配到不同的月份、年份的分区中。
  • LIST:基于列的离散值集合来分配数据的。对应的列的数据是一个类似枚举型的数据。
  • HASH:根据用户指定的列的hash值分配数据。
  • KEY:类似于HASH,但支持多列。

大家对先表分区有个认识后,下面咱们就开始实操一下。

2、操练

2.1、创建表分区

create table t_member(member_id int not null,member_name varchar(60),member_phone varchar(20),create_time datetime,update_time datetime
) PARTITION BY RANGE (YEAR(create_time)) (PARTITION P1 VALUES LESS THAN (2024),PARTITION P2 VALUES LESS THAN (2025),PARTITION P3 VALUES LESS THAN MAXVALUE );

不多解释了,sql语句还是比较容易理解。上面我创建了3个分区,咱们到服务器上看看数据文件,如下图:

在这里插入图片描述
目前是在一个目录中,如果你的系统有多个硬盘,把数据文件分别放在不同的硬盘上,那肯定会提高读写性能。下面咱们模拟一下过程。因为有些坑大家要避免

2.2、创建表分区,使用不同的数据目录

我们从一个简单的创建sql开始。

create table t_member32(member_id int not null,member_name varchar(60),member_phone varchar(20),create_time datetime,update_time datetime
) PARTITION BY RANGE (YEAR(create_time)) (PARTITION P1 VALUES LESS THAN (2024) DATA DIRECTORY = '/home/jackie',PARTITION P2 VALUES LESS THAN (2025) DATA DIRECTORY = '/mydata',PARTITION P3 VALUES LESS THAN MAXVALUE );

其实就是在刚才的sql的基础上(表名改了),为三个分区分配了三个不同的目录。p1、p2指定,p3明确指定存放目录,那就是保存在默认的目录里。

直接执行肯定会报错,因为p1、p2目录mysql不知道,要先让mysql知道这两个目录,也就是说不能随便指定一个操作系统的目录。下来咱们处理这个问题。

2.2.1 配置my.cnf

在my.cnf,找到“mysqld”段,加入下面配置(我就按上面sql写了):
在这里插入图片描述
注意:多个目录“;”号分割。保存后重启mysql,依然报错。还没完,咱们继续。

2.2.2 将目录的owner设置成mysql

管理员登录,设置/home/jackie和/mydata的owner。你的机器上要是还没有这两个目录就先新建一下。

chown mysql:mysql /home/jackie
chown mysql:mysql /mydata

此时还不行,执行刚才的sql语句时,会报存储引擎错误。

2.2.3、配置apparmor

apparmor是linux的一个安全组件,有兴趣大家去查查。咱们修改apparmor的配置:

sudo vim /etc/apparmor.d/usr.bin.mysqld

添加如下配置:

在这里插入图片描述
保存退出后,重新加载apparmor配置并重启,命令如下:

sudo systemctl reload apparmor.service 
sudo systemctl restart apparmor.service 

再次执行上面的创建语句,就能执行成功了。数据文件也按我们的规划放到了指定的区域。

在这里插入图片描述
这是/home/jackie目录的数据文件。其他的普通sql操作就不演示了,和普通表的操作一模一样。如果要在分区后继续新增分区、删除分区、合并分区大家可以看看mysql的文档,这里就不啰嗦了。

好了,大家试试,希望能在工作中对你有帮助。
//~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/72475.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nessus安装

Nessus:https://pan.quark.cn/s/f5fb09b6d4fb 1.软件安装 点击安装,剩下的下一步即可。 直接下一步安装即可 2.Web端安装 会弹出一个web窗口 开始初始化 创建用户 开始初始化 3.Cracker 会弹一个黑窗口 运行完,回车即可。访问https://loc…

26-小迪安全-模块引用,mvc框架,渲染,数据联动0-rce安全

先创建一个新闻需要的库 这样id值可以逐级递增 然后随便写个值,让他输出一下看看 模板引入 但是这样不够美观,这就涉及到了引入html模板 模板引入是html有一个的地方值可以通过php代码去传入过去,其他的html界面直接调用,这样页…

第十三届蓝桥杯大赛软件赛决赛C/C++ 大学 B 组

A 【2022——暴力DP / 优雅背包】-CSDN博客 B 【钟表——类日期问题】-CSDN博客 C 【卡牌——二分】-CSDN博客 D 【最大数字——DFS】-CSDN博客 E 【出差——Dijkstra】-CSDN博客 F 【费用报销——01背包】-CSDN博客 G 【故障——条件概率】-CSDN博客 H 【机房—…

树莓集团最新现状更新:南京园区业务的创新与突破

树莓集团在南京的园区业务呈现出蓬勃发展的态势,不断实现创新与突破。 在产业布局方面,南京园区进一步优化了产业结构。除了继续巩固数字影像、数字娱乐等传统优势领域外,还积极拓展了数字金融、数字教育等新兴领域。吸引了一批知名的数字金融…

Linux网络编程(20250301)

网络通信:进行不同主机的进程间通信 解决硬件与软件的互联互通 主机-->交换机-->路由器-->广域网-->路由器-->交换机-->主机 IP地址:区分不同主机 MAC地址:计算机硬件地址 端口号:区分主机上的不同进程 1…

【JavaScript】《JavaScript高级程序设计 (第4版) 》笔记-附录B-严格模式

附录B、严格模式 严格模式 ECMAScript 5 首次引入严格模式的概念。严格模式用于选择以更严格的条件检查 JavaScript 代码错误,可以应用到全局,也可以应用到函数内部。严格模式的好处是可以提早发现错误,因此可以捕获某些 ECMAScript 问题导致…

蓝桥试题:混境之地(记忆化搜索)

一、问题描述 小蓝有一天误入了一个混境之地。 好消息是:他误打误撞拿到了一张地图,并从中获取到以下信息: 混境之地是一个n⋅m 大小的矩阵,其中第 i 行第 j 列的的点 h i j​ 表示第 i 行第 j 列的高度。他现在所在位置的坐标…

CC++链接数据库(MySQL)超级详细指南

C/C链接数据库(MySQL)超级详细指南 在C/C编程中,与数据库进行交互是一项常见的任务。MySQL作为一个广泛使用的开源关系型数据库管理系统,提供了丰富的API供C/C开发者使用。本文将详细介绍如何在C/C程序中链接MySQL数据库&#xf…

基于EM期望最大化算法的GMM参数估计与三维数据分类系统python源码

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 EM算法 E步:期望步 M步:最大化步 4.2 GMM模型 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 程序运行配置环境: 人工智能算法…

制服小程序的“滑手”:禁用页面左右滑动全攻略

哈哈,看来你已经很聪明地发现了小程序中左右滑动的“顽皮”行为!😄 没错,我们可以通过设置 disableScroll 属性来“管教”它,同时结合 CSS 样式让页面既禁得住横向“乱跑”,又能顺畅地上下滚动。你的方案已…

docker学习笔记(1)从安装docker到使用Portainer部署容器

docker学习笔记第一课 先交代背景 docker宿主机系统:阿里云ubuntu22.04 开发机系统:win11 docker镜像仓库:阿里云,此阿里云与宿主机系统没有关系,是阿里云提供的一个免费的docker仓库 代码托管平台:github&…

stable-diffusion-webui 加载模型文件

背景 stable-diffusion-webui 安装完毕后,默认的模型生成的效果图并不理想,可以根据具体需求加载指定的模型文件。国内 modelscope 下载速度较快,以该站为例进行介绍 操作步骤 找到指定的模型文件 在 https://modelscope.cn/models 中查找…

kotlin高级用法总结

Kotlin 是一门功能强大且灵活的编程语言,除了基础语法外,它还提供了许多高级特性,可以帮助你编写更简洁、高效和可维护的代码。以下是 Kotlin 的一些高级用法,涵盖了协程、扩展函数、属性委托、内联类、反射等内容。 协程&#x…

Linux网络 NAT、代理服务、内网穿透

NAT 技术 IPv4 协议中存在 IP 地址数量不充足的问题,而 NAT 技术是当前解决 IP 地址不够用的主要手段 , 是路由器的一个重要功能。NAT 能够将私有 IP 对外通信时转为全局 IP,也就是就是一种将私有 IP 和全局 IP 相互转化的技术方法。 这可以让很多学…

世界模型在塑造自动驾驶中的作用:综述

25年2月来自华中理工和百度的论文“”The Role of World Models in Shaping Autonomous Driving: A Comprehensive Survey“。 驾驶世界模型 (DWM) 专注于预测驾驶过程中的场景演变,已成为实现自动驾驶一个有前途的范例。这些方法使自动驾驶系统能够更好地感知、理…

全向广播扬声器在油气田中的关键应用 全方位守护安全

油气田作为高风险作业场所,安全生产始终是重中之重。在紧急情况下,如何快速、有效地传达信息,确保人员安全撤离,是油气田安全管理的关键环节。全向广播扬声器凭借其全方位覆盖、高音质输出和强大的环境适应性,成为油气…

【AI大模型】AI赋能,使用DeepSeek 高效制作PPT实战详解

目录 一、前言 二、传统 PPT 制作问题 2.1 传统方式制作 PPT 2.2 AI 大模型辅助制作 PPT 2.3 适用场景对比分析 2.4 最佳实践与推荐 三、DeepSeek Kimi 高效制作PPT操作实践 3.1 Kimi 简介 3.2 DeepSeek Kimi 制作PPT优势 3.2.1 DeepSeek 优势 3.2.2 Kimi 制作PPT优…

【51单片机】程序实验13.串口通信

主要参考学习资料:B站【普中官方】51单片机手把手教学视频 开发资料下载链接:http://www.prechin.cn/gongsixinwen/208.html 前置知识:C语言 单片机套装:普中STC51单片机开发板A4标准版套餐7 目录 通信的基本概念串行通信与并行通…

论文阅读笔记:ArcFace: Additive Angular Margin Loss for Deep Face Recognition

论文阅读笔记:ArcFace: Additive Angular Margin Loss for Deep Face Recognition 1 背景2 创新点3 方法4 模块4.1 Softmax4.2 权重归一化4.3 乘性角度间隔4.4 特征归一化4.5 加性余弦间隔4.6 加性角度间隔4.7 二值化情况下的比较4.8 目标Logit分析 5 效果5.1 消融实…

代码随想录算法训练营 | 图论 | DFS

98. 所有可达路径// DFS #include <bits/stdc.h> using namespace std;vector<vector<int>> result; vector<int> path;void dfs(const vector<list<int>> &graph, int i, int target) {if (i target) {result.push_back(path);retu…