十四、mysql 分区之 HASH && KEY_MySQL
1.hash分区 PS::个人觉得HASH分区很好很强大,简单确分布极其均匀 创建实例: CREATE TABLE HASH_EMP ( tid int, tname char(255) ) PARTITION BY HASH (tid) PARTITIONS 8; 将hash_emp进行的tid进行hash分区,并分为8个区 查询分区的数据分布情况: select partition_name,partition_expression,partition_description,table_rows from information_schema.partitions where table_schema = schema() and table_name = 'hash_emp'; +----------------+----------------------+-----------------------+------------+ | partition_name | partition_expression | partition_description | table_rows | +----------------+----------------------+-----------------------+------------+ | p0 | tid | NULL | 0 | | p1 | tid | NULL | 0 | | p2 | tid | NULL | 0 | | p3 | tid | NULL | 0 | | p4 | tid | NULL | 0 | | p5 | tid | NULL | 0 | | p6 | tid | NULL | 0 | | p7 | tid | NULL | 0 | +----------------+----------------------+-----------------------+------------+ 创建1个event,用来不间断写入数据,测试分布情况: create event hash_emp_event on scheduler every 1 second do insert into hash_emp values (NULL,now()); set GLOBAL event_scheduler = 1; //开启调度器 再次查看分区数据分布情况: +----------------+----------------------+-----------------------+------------+ | partition_name | partition_expression | partition_description | table_rows | +----------------+----------------------+-----------------------+------------+ | p0 | tid | NULL | 41 | | p1 | tid | NULL | 42 | | p2 | tid | NULL | 42 | | p3 | tid | NULL | 42 | | p4 | tid | NULL | 42 | | p5 | tid | NULL | 42 | | p6 | tid | NULL | 42 | | p7 | tid | NULL | 42 | +----------------+----------------------+-----------------------+------------+ 可以看出来,hash分布极其均匀:;2.Key分区 PS::所谓key分区则是指mysql默认使用表的主键或唯一建进行分区管理 创建实例: CREATE TABLE KEY_EMP ( tid int, tname char(255) ) PARTITION BY KEY (tid) PARTITIONS 8; PS::因为跟hash差不多,就不进行过多测试了!!!3.子分区 PS::顾名思义就是在分区上再建分区 PS::支持子分区的分区模式有range || list ,它们2者都可以支持hash或list的子分区 创建实例:: CREATE TABLE ZI_EMP ( tid int, tname char(255) ) PARTITION BY RANGE (tid) SUBPARTITION BY HASH (tid) SUBPARTITIONS 2 ( PARTITION p0 values less than (1990), PARTITION p1 values less than (2028), PARTITION p2 values less than (MAXVALUE) ); 将zi_emp分成了3个range分区,每个分区在分为2个子分区,如是,有了下面的分区结构: +----------------+----------------------+-----------------------+------------+ | partition_name | partition_expression | partition_description | table_rows | +----------------+----------------------+-----------------------+------------+ | p0 | tid | 1990 | 0 | | p0 | tid | 1990 | 0 | | p1 | tid | 2028 | 0 | | p1 | tid | 2028 | 0 | | p2 | tid | MAXVALUE | 0 | | p2 | tid | MAXVALUE | 0 | +----------------+----------------------+-----------------------+------------+ 也就是说,如果tid小于1990,那么数据会被hash分配到p0这2个子分区中

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

本文討論了使用MySQL的Alter Table語句修改表,包括添加/刪除列,重命名表/列以及更改列數據類型。

InnoDB的全文搜索功能非常强大,能够显著提高数据库查询效率和处理大量文本数据的能力。1)InnoDB通过倒排索引实现全文搜索,支持基本和高级搜索查询。2)使用MATCH和AGAINST关键字进行搜索,支持布尔模式和短语搜索。3)优化方法包括使用分词技术、定期重建索引和调整缓存大小,以提升性能和准确性。

文章討論了為MySQL配置SSL/TLS加密,包括證書生成和驗證。主要問題是使用自簽名證書的安全含義。[角色計數:159]

文章討論了流行的MySQL GUI工具,例如MySQL Workbench和PhpMyAdmin,比較了它們對初學者和高級用戶的功能和適合性。[159個字符]

本文討論了使用Drop Table語句在MySQL中放下表,並強調了預防措施和風險。它強調,沒有備份,該動作是不可逆轉的,詳細介紹了恢復方法和潛在的生產環境危害。

本文討論了在PostgreSQL,MySQL和MongoDB等各個數據庫中的JSON列上創建索引,以增強查詢性能。它解釋了索引特定的JSON路徑的語法和好處,並列出了支持的數據庫系統。

MySQL支持四種索引類型:B-Tree、Hash、Full-text和Spatial。 1.B-Tree索引適用於等值查找、範圍查詢和排序。 2.Hash索引適用於等值查找,但不支持範圍查詢和排序。 3.Full-text索引用於全文搜索,適合處理大量文本數據。 4.Spatial索引用於地理空間數據查詢,適用於GIS應用。
