程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL分區表的管理~2

MySQL分區表的管理~2

編輯:MySQL綜合教程

MySQL分區表的管理~2


一、維護分區   對於表的維護,我們一般有如下幾種方式: CHECK TABLE, OPTIMIZE TABLE, ANALYZE TABLE和REPAIR TABLE。   而這幾種方式,對於分區同樣適用。下面,我們一一闡述各種的作用。   1. Rebuilding partitions   重建分區,它相當於先刪除分區中的數據,然後重新插入。這個主要是用於分區的碎片整理。   譬如:   ALTER TABLE t1 REBUILD PARTITION p0, p1; 2. Optimizing partitions   該命令主要是用於回收空閒空間和分區的碎片整理。對分區執行該命令,相當於依次對分區執行 CHECK PARTITION, ANALYZE PARTITION,REPAIR PARTITION命令。   譬如:   ALTER TABLE t1 OPTIMIZE PARTITION p0, p1; 注意:   一些存儲引擎,譬如InnoDB,並不支持基於分區的Optimizing。當你執行該命令時,會rebuild整張表,在 MySQL 5.6.9版本以上,執行該命令會導致整張表被rebuild和analyze。在這種情況下,建議直接使用 ALTER TABLE ... REBUILD PARTITION 或 ALTER TABLE ... ANALYZE PARTITION。   3. Analyzing partitions   讀取和存儲分區中值的分布情況   ALTER TABLE t1 ANALYZE PARTITION p3; 4.  Repairing partitions   修復被破壞的分區   ALTER TABLE t1 REPAIR PARTITION p0,p1; 5. Checking partitions   檢查分區是否存在錯誤   ALTER TABLE trb3 CHECK PARTITION p1; 注意:   1> mysqlcheck和myisamchk並不支持分區表   2> 上述分區名也可用all替代,指的是對所有分區進行操作。   3> ANALYZE, CHECK, OPTIMIZE, REBUILD, REPAIR和TRUNCATE命令並不適用於子分區。       二、如何獲取分區的相關信息   1. 通過 SHOW CREATE TABLE 語句來查看分區表的分區子句   譬如:     mysql> show create table e\G *************************** 1. row ***************************        Table: e Create Table: CREATE TABLE `e` (   `id` int(11) NOT NULL,   `fname` varchar(30) DEFAULT NULL,   `lname` varchar(30) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (id) (PARTITION p0 VALUES LESS THAN (50) ENGINE = InnoDB,  PARTITION p1 VALUES LESS THAN (100) ENGINE = InnoDB,  PARTITION p2 VALUES LESS THAN (150) ENGINE = InnoDB,  PARTITION p3 VALUES LESS THAN MAXVALUE ENGINE = InnoDB) */ 1 row in set (0.00 sec)   2. 通過 SHOW TABLE STATUS 語句來查看表是否分區   對應Create_options字段,譬如:     mysql> show table status\G *************************** 1. row ***************************            Name: e          Engine: InnoDB         Version: 10      Row_format: Compact            Rows: 6  Avg_row_length: 10922     Data_length: 65536 Max_data_length: 0    Index_length: 0       Data_free: 0  Auto_increment: NULL     Create_time: 2015-12-07 22:26:06     Update_time: NULL      Check_time: NULL       Collation: latin1_swedish_ci        Checksum: NULL  Create_options: partitioned         Comment:    3. 查看 INFORMATION_SCHEMA.PARTITIONS表   4. 通過 EXPLAIN PARTITIONS SELECT 語句查看對於具體的SELECT語句,會訪問哪個分區。       三、分區交換   分區交換的語法如下:   ALTER TABLE pt EXCHANGE PARTITION p WITH TABLE nt 其中,pt是分區表,p是pt的分區(注:也可以是子分區),nt是目標表。   其實,分區交換的限制還是蠻多的:   1> nt不能為分區表   2> nt不能為臨時表   3> nt和pt的結構必須一致   4> nt不存在任何外鍵約束,即既不能是主鍵,也不能是外鍵。   5> nt中的數據不能位於p分區的范圍之外。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved