mysql delete无法释放空间用分区代替
2016-09-03 22:05
399 查看
在做物联网项目时要定期删除数据,发现delete的删除数据存在问题,就是无法释放空间,而truncate删除也存在局限性(删除整个表),我建表时采用了分区技术,所以采用分区删除数据是最好选择。
分区的相关知识我就先不讲了,就说两点
分区字段不要有空值,因为空值会默认到无用分区中,这样查询会多扫描分区。
查询条件最好要带着分区字段,不然性能会很低,需要在所有分区里扫一遍。
添加分区脚本
ENGINE=InnoDB PARTITION BY RANGE COLUMNS(date)(
PARTITION p201410 VALUES less than (20141031),
PARTITION p201411 VALUES less than (20141131),
PARTITION p201412 VALUES less than (20141231),
PARTITION p201501 VALUES less than (20150131),
...........................
PARTITION pcatchall VALUES LESS THAN MAXVALUE
);
删除分区
ALTER TABLE 表 DROP PARTITION p201010;
合并分区
ALTER TABLE b REORGANIZE PARTITION p1,p2 into (p12);
拆分分区
ALTER TABLE b REORGANIZE PARTITION p1,p2 into (p12);
分区的相关知识我就先不讲了,就说两点
分区字段不要有空值,因为空值会默认到无用分区中,这样查询会多扫描分区。
查询条件最好要带着分区字段,不然性能会很低,需要在所有分区里扫一遍。
添加分区脚本
ENGINE=InnoDB PARTITION BY RANGE COLUMNS(date)(
PARTITION p201410 VALUES less than (20141031),
PARTITION p201411 VALUES less than (20141131),
PARTITION p201412 VALUES less than (20141231),
PARTITION p201501 VALUES less than (20150131),
...........................
PARTITION pcatchall VALUES LESS THAN MAXVALUE
);
删除分区
ALTER TABLE 表 DROP PARTITION p201010;
合并分区
ALTER TABLE b REORGANIZE PARTITION p1,p2 into (p12);
拆分分区
ALTER TABLE b REORGANIZE PARTITION p1,p2 into (p12);
相关文章推荐
- mysql delete无法释放空间用分区代替
- 测试oracle 的delete无法释放表空间
- Powerbuilder中,数组无法在使用完后释放空间,datastore插入行的速度只有dw的百分之一。
- new、delete、指向连续空间的指针、数组、空间释放、空间申请[C++][内存管理]
- MySQL大量的delete后空间如何回收
- Linux下通过软链接转移mysql目录,解决分区空间不足(转)
- mysql 清空表,释放空间
- oralce中,delete表之后释放表空间的问题
- 关于mysql 删除数据后物理空间未释放
- 关于mysql 删除数据后物理空间未释放(转载)
- 分区truncate操作的介绍及对全局索引和空间释放影响的案例解析
- 关于mysql 删除数据后物理空间未释放(转载)
- delete释放空间时出错的原因!
- delete 指针之后 ,只是释放了指针指向的内存空间,指针不会自动置为NULL,还有delete 遇到指针为NULL时不会调用析构函数
- new、delete、指向连续空间的指针、数组、空间释放、空间申请
- linux无法登录 根分区空间使用完了的解决方法
- delete释放空间时出错的原因!
- 数据库释放空间时不能使用delete
- Oracle delete数据后的释放表空间,加快访问速度
- ORACLE关于DELETE后空间不释放问题