最近接觸一點 Partition
但這個東西不是很熟悉
所以小記一些東西(都是網路上找的)
主鍵和 Parition
1503 - A PRIMARY KEY must include all columns in the table's partitioning function
MYSQL 的分区字段,必须包含在主键字段内 - 王 庆 - 博客园
2019-08-26 小記
要把 patition 的欄位加到 PRIMARY KEY
簡單說說我的看法
partition 用到的欄位要加進去 primary key
這樣切的 partition 時需要注意
不常用就會忘記
今天,發現用 MySQL 子查詢 partition table
explain 發現會吃免一個 partition
1 | SELECT |
目前不確定是不是因為 id 為字串關系
但目前系統查詢還不會很慢
SQL 查詢 Partition 語法
1 | SELECT * FROM information_schema.partitions WHERE TABLE_SCHEMA='your_database' AND TABLE_NAME = 'your_table' AND PARTITION_NAME IS NOT NULL |
Are the MySQL Partitions visible in the EXPLAIN plan of a SELECT….? - Stack Overflow
EXPLAIN 沒有出現 Partition
用EXPLAIN PARTITIONS
Are the MySQL Partitions visible in the EXPLAIN plan of a SELECT….? - Stack Overflow
mysql - How to view information of partitions in a table? - Stack Overflow
Partition 分配不均的問題
用質數,我也沒有實驗過…
MySQL 之 KEY 分區引發的血案 - 每日頭條 備份圖
mysql 中的 key 分区为什么总是一半有数据,一半没有数据?-CSDN 论坛
1 | 如果設置40,64,128等偶數個分區數(PARTITIONS 64),會導致編號為奇數的分區(p1, p3, p5, p7, ... p2n-1)完全插不進數據; |
KEY & Hash 差異
看不是很懂,Hash 不能重覆,Key 可以??? 等研究出來再補
手建和內建 Partition 差別
手工分表 VS 分區表
手工分表的邏輯,找到所有需要更新的分表,然後依次更新,在性能上,與分區表並沒有實質的差別
分區表由 Server 層決定使用哪個分區,手工分表由應用代碼決定使用哪一個分表
UUID 主鍵 vs 流水號 主鍵
MySQL 使用自增 ID 主键和 UUID 作为主键的优劣比较详细过程(从百万到千万表记录测试) - chuixue24 的博客 - CSDN 博客
不是每張表適合做 Partition
也看 SQL 語句,通常要看所有 WHERE 條件資料依照做切割
刪除 Partition 會有資料消失??!
phpmyadmin 可以做刪除動作!!但發現會有少資料
解決方法
1 | ALTER TABLE xxxxxx rename TO old_20170101_xxxxxx; |
不過為什麼會少資料還沒有找到原因
自動建立 Partition
本文備份
1 | #!/bin/sh |
- Partition maintainance script for Mysql – Database Administration Blog
- mysql 能不能自动按日期分区(3个月如果手写要写90个partition) - OSCHINA
本文備份
1 | MYSQL-- 每半月一个分区,自动维护 |
- MYSQL– 每半月一个分区,自动维护-909413335-ChinaUnix博客
- Partition maintainance script for Mysql – Database Administration Blog
其他連結:
- Partition maintainance script for Mysql – Database Administration Blog
- MySQL partition table 初體驗 @ 不大會寫程式 :: 隨意窩 Xuite日誌
- XYZ的筆記本: MySQL 資料表分區(partition)
- What’s MySQL partition
- mysql 能不能自动按日期分区(3个月如果手写要写90个partition) - OSCHINA
- mysql - ERROR 1526 (HY000): Table has no partition for value 1426566990 - Stack Overflow
- Mysql - 如何修改 partition 並還原資料 - Luka’s notes
- MySQL Partition and InnoDB - CornelTEK - Medium
- [高并发问题] MySQL 分区的情况下不能使用自增 ID,若使用 UUID 与时间做联合主键,数据量特大时,查询库效率如何? | Laravel China 社区
- mysql 的 partition与key的关系、限制 - barfoo的专栏 - CSDN博客
- 聊聊partition的方式 - code-craft - SegmentFault 思否
- MySQL Partitioning a VARCHAR(60) - Stack Overflow
- [MySQL]MySQL分区与传统的分库分表 - 海天的笔记本 | haitian-coder
- MySQL partition 筆記 - Kakashi’s Blog