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.pswp.cn/bicheng/72475.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/72475.shtml
英文地址,請注明出處:http://en.pswp.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…