亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL表分區(qū)配置入門指南

 更新時間:2023年05月25日 14:38:13   作者:北橋蘇  
這篇文章主要為大家介紹了MySQL表分區(qū)配置入門指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

引言

在一些系統(tǒng)中有時某張表會出現(xiàn)百萬或者千萬的數(shù)據(jù)量,盡管其中使用了索引,查詢速度也不一定會很快。這時候可能就需要通過分庫,分表,分區(qū)來解決這些性能瓶頸。

一. 選擇合適的解決方法

1. 分庫分表。

分庫分表從名字上就明白是需要創(chuàng)建額外的新數(shù)據(jù)庫或新表,可以建在其他的機器上也可以是和當前數(shù)據(jù)庫同一臺機器。在優(yōu)化查詢上可能需要買新機器或者要修改邏輯代碼了。比如一張user表,當數(shù)據(jù)超過10W,就可以創(chuàng)建新的user表,假設是user2。通過接收的UID,和分組10W(假定),取模就是對應的user表名的索引數(shù)字。

2. 分區(qū)。

分區(qū)這里是指表分區(qū),mysql數(shù)據(jù)庫管理系統(tǒng)提供的表功能,分區(qū)后邏輯上是同一張表,物理上數(shù)據(jù)存儲是分開的。能否優(yōu)化查詢還取決于在查詢中是否使用到了分區(qū)字段,這個就和索引的使用有點類似,但是好處就是這個不像分庫分表,可以幾乎不修改業(yè)務邏輯代碼就可以提升速度。下面再總結一下mysql數(shù)據(jù)保存格式和innodb,myisam。

2.1. innodb存儲引擎。

innodb,支持事務處理,外來鍵,在查詢方面要慢于myisam。對并發(fā)友好,支持行鎖和表鎖,行鎖的形成要看查詢條件。有共享空間結構和獨立空間結構,保存的格式有frm和ibddata1(共享結構),ibd(獨立結構)。

  • 共享空間結構 

共享結構為innodb默認的結構,除了frm保存innodb表結構外,整個數(shù)據(jù)庫所有表的索引和數(shù)據(jù)源都保存在ibdata中??梢酝ㄟ^在mysql-ini中添加 innodb_file_per_table=1設置為獨立空間結構。

  • 獨立空間結構

獨立空間結構就是每個對應的表保存對應的數(shù)據(jù)源和索引在一個后綴為ibd的文件中,表結構同樣也保存在frm中。

2.2. myisam存儲引擎

myisam是mysql默認存儲引擎,不支持事務,但是會對I/O進行平均分配,相較于innodb查詢速度要快,對并發(fā)不友好,支持表鎖。格式frm同樣也是表結構,myd為表的數(shù)據(jù)源,myi表的索引儲存(所以一張表的索引不是越多越好,因為在添加和修改數(shù)據(jù)時也需要對索引庫進行修改和添加) 

二. 表分區(qū)的幾種分區(qū)類型。

1. RANGE分區(qū):

基于屬于一個給定連續(xù)區(qū)間的列值,把多行分配給分區(qū)。

2. LIST分區(qū):

類似于按RANGE分區(qū),區(qū)別在于LIST分區(qū)是基于列值匹配一個離散值集合中的某個值來進行選擇。

3. HASH分區(qū):

基于用戶定義的表達式的返回值來進行選擇的分區(qū),該表達式使用將要插入到表中的這些行的列值進行計算。這個函數(shù)可以包含MySQL 中有效的、產(chǎn)生非負整數(shù)值的任何表達式。

4. KEY分區(qū):

類似于按HASH分區(qū),區(qū)別在于KEY分區(qū)只支持計算一列或多列,且MySQL服務器提供其自身的哈希函數(shù)。必須有一列或多列包含整數(shù)值。具體介紹可以搜索以下"mysql表分區(qū)的分區(qū)類型"。 

三. 表分區(qū)的創(chuàng)建。

par格式為保存的是分區(qū)的規(guī)則,ibd就是分別為每一塊分區(qū)后的數(shù)據(jù)源,以下為innodb分區(qū),myisam的是有多個myd文件同時也存在par。

1. 新建表時添加分區(qū)。

 比如以下創(chuàng)建一張employees 的表,并創(chuàng)建了list類型的4個分區(qū),以store_id 字段為分區(qū)字段。

CREATE TABLE employees (
    id INT NOT NULL,
    fname VARCHAR(30),
    lname VARCHAR(30),
    hired DATE NOT NULL DEFAULT '1970-01-01',
    separated DATE NOT NULL DEFAULT '9999-12-31',
    job_code INT,
    store_id INT
)
PARTITION BY LIST(store_id)
    PARTITION pNorth VALUES IN (3,5,6,9,17),
    PARTITION pEast VALUES IN (1,2,10,11,19,20),
    PARTITION pWest VALUES IN (4,12,13,14,18),
    PARTITION pCentral VALUES IN (7,8,15,16)
);

2. 存在的表添加分區(qū)

將原來的數(shù)據(jù)以當前的分區(qū)規(guī)則對原來數(shù)據(jù)進行規(guī)整,以下是對ztest表添加range類型的3個分區(qū),以id字段為分區(qū)字段。

alter table rm_ztest partition by RANGE (id)   
(
    PARTITION p0 VALUES LESS THAN (948),  
    PARTITION p1 VALUES LESS THAN (960),
    PARTITION p3 VALUES LESS THAN MAXVALUE
)

3. navicat for mysql工具添加或創(chuàng)建。

平時我使用上面的工具比較多,所以他也有一個添加分區(qū)的功能。"新建表"或者是"設計表",點擊"選項",“分割區(qū)”就可以進入分區(qū)的創(chuàng)建了。

四. 分區(qū)查詢的實驗結果。

我就拿了一張幾百萬數(shù)據(jù)的表備份了副本,其中一張創(chuàng)建了分區(qū),并使用id分區(qū)字段進行查詢。

從上面兩張截圖可以看出使用了分區(qū)的查詢速度要比未使用分區(qū)快差不多1倍,但是如果不使用id為查詢條件或沒有使用到,速度二者是一樣的,甚至有時分區(qū)過的還要慢于未分區(qū)的,所以在使用上還需結合當前業(yè)務做合理的選擇。

explain partitions select * from table_name ……       

可以查看當前查詢是否使用了分區(qū),分區(qū)使用的是哪幾個等等信息。 

以上就是MySQL表分區(qū)配置入門指南的詳細內(nèi)容,更多關于MySQL表分區(qū)配置的資料請關注腳本之家其它相關文章!

相關文章

  • mysql如何分別按年/月/日/周分組統(tǒng)計數(shù)據(jù)詳解

    mysql如何分別按年/月/日/周分組統(tǒng)計數(shù)據(jù)詳解

    我們在用Mysql抽取數(shù)據(jù)時候,經(jīng)常需要按照天、周、月等不同的粒度對數(shù)據(jù)進行分組統(tǒng)計,下面這篇文章主要給大家介紹了關于mysql如何分別按年/月/日/周分組統(tǒng)計數(shù)據(jù)的相關資料,需要的朋友可以參考下
    2022-12-12
  • MySQL外鍵約束(Foreign?Key)案例詳解

    MySQL外鍵約束(Foreign?Key)案例詳解

    MySQL外鍵約束(FOREIGN KEY)是表的一個特殊字段,經(jīng)常與主鍵約束一起使用,下面這篇文章主要給給大家介紹了關于MySQL外鍵約束(Foreign?Key)的相關資料,需要的朋友可以參考下
    2022-06-06
  • Linux下mysql異地自動備份的方法

    Linux下mysql異地自動備份的方法

    這篇文章主要介紹了Linux下mysql異地自動備份的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • MySQL常見錯誤有哪些_MySQL常見錯誤的快速解決方法

    MySQL常見錯誤有哪些_MySQL常見錯誤的快速解決方法

    MySQL常見錯誤有哪些呢?下面小編就為大家?guī)硪黄狹ySQL常見錯誤的快速解決方法?,F(xiàn)在分享個大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-03-03
  • MySQL允許遠程登錄的操作實現(xiàn)

    MySQL允許遠程登錄的操作實現(xiàn)

    本文主要介紹了MySQL允許遠程登錄的操作實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-02-02
  • Mysql給普通分頁查詢結果加序號實操

    Mysql給普通分頁查詢結果加序號實操

    這篇文章主要介紹了Mysql給普通分頁查詢結果加序號實操,文章通過圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • mysql5.6.8源碼安裝過程

    mysql5.6.8源碼安裝過程

    這篇文章主要介紹了mysql5.6.8源碼安裝過程,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-01-01
  • Mysql邏輯架構詳解

    Mysql邏輯架構詳解

    今天小編就為大家分享一篇關于Mysql邏輯架構詳解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • mysql修改用戶密碼的方法和mysql忘記密碼的解決方法

    mysql修改用戶密碼的方法和mysql忘記密碼的解決方法

    這篇文章主要介紹了mysql修改用戶密碼的方法和mysql忘記密碼的解決方法,大家參考使用吧
    2014-01-01
  • Mysql大型SQL文件快速恢復方案分享

    Mysql大型SQL文件快速恢復方案分享

    這篇文章主要給大家介紹了關于Mysql大型SQL文件快速恢復方案的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Mysql具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-09-09

最新評論