只说用法,不同版本之间的锁都有区别

RANGE分区【基于属于一个给定连续区间的列值,把多行分配给分区】。
主键中一定要包含分区字段,id一般是默认主键,当用某个字段做分区处理时【以下示例中使用create_time】,设置的主键中要包含做分区的字段。
注:查询时一定要包含分区字段,否则有慢sql的风险
SELECT * FROM `open_log` WHERE `create_time` BETWEEN '2023-06-29' AND '2023-06-30';
UPDATE `open_log` SET `**` = ? WHERE `create_time` = '2023-06-29 11:11:11' AND `id` = ?;
在进行表分区之前,首先需要创建一个新表。可以使用CREATE TABLE语句来创建表,并在其中指定要分区的列和分区规则。
CREATE TABLE sales (
sale_id INT,
sale_date DATE,
sale_amount DECIMAL(10,2)
) PARTITION BY RANGE (YEAR(sale_date)) (
PARTITION p0 VALUES LESS THAN (2019),
PARTITION p1 VALUES LESS THAN (2020),
PARTITION p2 VALUES LESS THAN (2021),
PARTITION p3 VALUES LESS THAN (2022)
);
在上面的示例中,我们创建了一个名为sales的表,并按照sale_date列的年份进行分区。总共创建了4个分区,分别是2019年之前、2019年、2020年和2021年。
在创建表之后,可以使用ALTER TABLE语句来添加更多的分区。可以根据需要随时增加或删除分区。
ALTER TABLE sales ADD PARTITION (
PARTITION p4 VALUES LESS THAN (2023)
);
在上面的示例中,我们向sales表中添加了一个新的分区,该分区包含2022年以后的数据。