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

  1. 不同版本的性能优化(5.7,8)
  2. 不同的事务隔离级别

76a639b1f0b243052d08357d47a07ca.png

注意事项

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年。

步骤2:添加分区

在创建表之后,可以使用ALTER TABLE语句来添加更多的分区。可以根据需要随时增加或删除分区。

ALTER TABLE sales ADD PARTITION (
    PARTITION p4 VALUES LESS THAN (2023)
);

在上面的示例中,我们向sales表中添加了一个新的分区,该分区包含2022年以后的数据。