mysql锁和分区
mysql 锁:
myISAM 在执行查询语句前,会自动涉及的所有表加读锁, 在执行增删改操作前,会自动
给涉及的表加写锁
1.对myISAM 表的读操作(加读锁),不会阻塞其他进程对同一表的读请求,但会阻塞对同一表的 写请求。只有读锁释放后,才会执行其他进行的写操作
2. 对myISAM 表的写操作(加写锁),会阻塞其他进程对同一表的读和写操作,只有当写锁释放后
才会执行其他进程的读写操作
总结: 读锁会阻塞写,不会阻塞读。 写锁会把读和写都阻塞
myISAM : 写优先, 适合读
mysql 分区: range分区:
分区键是日期或是时间类型
经常运行包含分区键的查询, mysql 可以很快的确定只有某一个或某些分区需要扫描,
定期按分区范围清理历史数据
HASH:分区
根据分区键的值把数据行存储到表的不同分区
数据可以平均分布在各个分区中
HASH分区的键值必须是一个int类型的值,或是通过函数可以转为int类型
list 分区:
按分区键取值的列表进行分区
同范围分区一样, 各分区的列表值不能重复
每一行数据必须能找到对应分区列表,否则数据插入失败
数据归档:将一个分区的数据放到另一张表中
1. 创建跟分区相同字段的表(新表)
2. alter table table1 exchange partition 分区1 with table 新表;
解释:将table1 表中分区1里面的数据放到据新表中