日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 西安_MySQL分区维护

發布時間:2025/5/22 数据库 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 西安_MySQL分区维护 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

該樓層疑似違規已被系統折疊?隱藏此樓查看此樓

注釋:實際上,本節討論的命令還沒有在MySQL 5.1中實現, 在這里提出的目的,是為了在5.1版投產前的開發周期期間,引出來自用戶測試該軟件的反饋意見。(換句話說,就是“請不要反饋這樣的缺陷,說這些命令不起作用”)。隨著MySQL5.1版開發的繼續,這些信息很有可能發生變化。隨著分區功能的實現和提高,我們將更新本節的內容。

MySQL 5.1中可以執行許多分區維護的任務。對于分區表,MySQL不支持命令CHECK TABLE,OPTIMIZE TABLE,ANALYZE TABLE,或REPAIR TABLE。作為替代,可以使用ALTER TABLE 的許多擴展來在一個或多個分區上直接地執行這些操作,如下面列出的那樣:

· 重建分區: 這和先刪除保存在分區中的所有記錄,然后重新插入它們,具有同樣的效果。它可用于整理分區碎片。

示例:

ALTER TABLE t1 REBUILD PARTITION (p0, p1);

· 優化分區:如果從分區中刪除了大量的行,或者對一個帶有可變長度的行(也就是說,有VARCHAR,BLOB,或TEXT類型的列)作了許多修改,可以使用“ALTER TABLE ... OPTIMIZE PARTITION”來收回沒有使用的空間,并整理分區數據文件的碎片。

示例:

ALTER TABLE t1 OPTIMIZE PARTITION (p0, p1);

在一個給定的分區表上使用“OPTIMIZE PARTITION”等同于在那個分區上運行CHECK PARTITION,ANALYZE PARTITION,和REPAIR PARTITION。

· 分析分區:讀取并保存分區的鍵分布。

示例:

ALTER TABLE t1 ANALYZE PARTITION (p3);

· 修補分區: 修補被破壞的分區。

示例:

ALTER TABLE t1 REPAIR PARTITION (p0,p1);

· 檢查分區: 可以使用幾乎與對非分區表使用CHECK TABLE 相同的方式檢查分區。

示例:

ALTER TABLE trb3 CHECK PARTITION (p1);

這個命令可以告訴你表t1的分區p1中的數據或索引是否已經被破壞。如果發生了這種情況,使用“ALTER TABLE ... REPAIR PARTITION”來修補該分區。

還可以使用mysqlcheck或myisamchk 應用程序,在對表進行分區時所產生的、單獨的MYI文件上進行操作,來完成這些任務。

獲取關于分區的信息

本節討論獲取關于現有分區的信息。這個功能仍然處于計劃階段,所以現階段在這里描述的,實際上是我們想要在MySQL 5.1中實現的一個概觀。

如在本章中別處討論的一樣,在SHOW CREATE TABLE的輸出中包含了用于創建分區表的PARTITION BY子句。例如:

mysql> SHOW CREATE TABLE trb3\G*************************** 1. row *************************** Table: trb3Create Table: CREATE TABLE `trb3` ( `id` int(11) default NULL, `name` varchar(50) default NULL, `purchased` date default NULL) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (YEAR(purchased)) ( PARTITION p0 VALUES LESS THAN (1990) ENGINE = MyISAM, PARTITION p1 VALUES LESS THAN (1995) ENGINE = MyISAM, PARTITION p2 VALUES LESS THAN (2000) ENGINE = MyISAM, PARTITION p3 VALUES LESS THAN (2005) ENGINE = MyISAM)1 row in set (0.00 sec)

注釋:當前,對于按HASH或KEY分區的表,PARTITIONS子句并不顯示。 (Bug #14327)

SHOW TABLE STATUS用于分區表,它的輸出與用于非分區表的輸出相同,除了引擎(Engine)列總是包含'PARTITION'值。(關于這個命令的更多信息,參見13.5.4.18節,“SHOW TABLE STATUS語法”)。要獲取單個分區的狀態信息,我們計劃實現一個SHOW PARTITION STATUS命令(請參見下面)。

計劃用于分區表的、兩個附加的SHOW命令是:

· SHOW PARTITIONS

這個命令預期其功能類似于SHOW TABLES和SHOW DATABASES,除了該命令將列出的是分區而不是表或數據庫。這個命令的輸出可能包含單個稱為Partitions_in_tbl_name 的列,其中tbl_name 是分區表的名字。對于SHOW TABLES命令而言,如果一旦選擇了一個數據庫,隨后該數據庫將作為SHOW TABLES命令的默認數據庫。但是由于SHOW PARTITIONS命令不可能用這樣的方式來“選擇”一個表,它很可能需要使用FROM子句,以便MySQL知道要顯示的是哪個表的分區信息。

· SHOW PARTITION STATUS

這個命令將提供關于一個或多個分區的詳細狀態信息。它的輸出很可能包含有與SHOW TABLE STATUS 的輸出相同或類似的列,此外,還包括顯示用于分區的數據和索引路徑的附加列。這個命令可能支持LIKE和FROM子句,這樣使得通過名字獲得關于一個給定分區的信息,或者獲得關于屬于指定表或數據庫的分區的信息,成為可能。

擴展INFORMATION_SCHEMA 數據庫的計劃也在進行中,以便提供關于分區表和分區的信息。這個計劃當前還處一個在非常早的階段;隨著補充的信息變得可用,以及任何新的、與分區有關的INFORMATION_SCHEMA擴展得以實現,我們將更新手冊相關部分的內容。

這是MySQL參考手冊的翻譯版本,關于MySQL參考手冊,請訪問dev.mysql.com。原始參考手冊為英文版,與英文版參考手冊相比,本翻譯版可能不是最新的。

在改變分區設置方面,按照HASH分區或KEY分區的表彼此非常相似,但是它們又與按照RANGE或LIST分區的表在很多方面有差別。所以,本節只討論按照HASH或KEY分區表的修改。

不能使用與從按照RANGE或LIST分區的表中刪除分區相同的方式,來從HASH或KEY分區的表中刪除分區。但是,可以使用“ALTER TABLE ... COALESCE PARTITION”命令來合并HASH或KEY分區。例如,假定有一個包含顧客信息數據的表,它被分成了12個分區。該顧客表的定義如下:

CREATE TABLE clients (http://www.hdd-120.cn/ id INT, fname VARCHAR(30), lname VARCHAR(30), signed DATE)PARTITION BY HASH( MONTH(signed) )PARTITIONS 12;

要減少分區的數量從12到6,執行下面的ALTER TABLE命令:

mysql> ALTER TABLE clients COALESCE PARTITION 6;Query OK, 0 rows affected (0.02 sec)

對于按照HASH,KEY,LINEAR HASH,或LINEAR KEY分區的表, COALESCE能起到同樣的作用。下面是一個類似于前面例子的另外一個例子,它們的區別只是在于表是按照LINEAR KEY 進行分區:

mysql> CREATE TABLE clients_lk ( -> id INT, -> fname VARCHAR(30), -> lname VARCHAR(30), -> signed DATE -> ) -> PARTITION BY LINEAR KEY(signed) -> PARTITIONS 12;Query OK, 0 rows affected (0.03 sec) mysql> ALTER TABLE clients_lk COALESCE PARTITION 6;Query OK, 0 rows affected (0.06 sec)Records: 0 Duplicates: 0 Warnings: 0

COALESCE不能用來增加分區的數量,如果你嘗試這么做,結果會出現類似于下面的錯誤:

mysql> ALTER TABLE clients COALESCE PARTITION 18;錯誤1478 (HY000): 不能移動所有分區,使用DROP TABLE代替

要增加顧客表的分區數量從12到18,使用“ALTER TABLE ... ADD PARTITION”,具體如下:

ALTER TABLE clients ADD PARTITION PARTITIONS 18;

注釋:“ALTER TABLE ... REORGANIZE PARTITION”不能用于按照HASH或HASH分區的表。

總結

以上是生活随笔為你收集整理的mysql 西安_MySQL分区维护的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。