odoo实现表分区 partition

数据库表分区的优势

在特定场景下,查询性能极大提高,尤其是当大部分经常访问的数据记录在一个或少数几个分区表上时。

表分区减小了索引的大小,并使得常访问的分区表的索引更容易保存于内存中。

当查询或者更新访问一个或少数几个分区表中的大部分数据时,可以通过顺序扫描该分区表而非使用大表索引来提高性能。

可通过添加或移除分区表来高效的批量增删数据。如可使用ALTER TABLE NO INHERIT可将特定分区从主逻辑表中

移除(该表依然存在,并可单独使用,只是与主表不再有继承关系并无法再通过主表访问该分区表),

或使用DROP TABLE直接将该分区表删除。这两种方式完全避免了使用DELETE时所需的VACUUM额外代价。

很少使用的数据可被迁移到便宜些的慢些的存储介质中

一般建议当单表大小超过内存就可以考虑表分区了

列表分区、范围分区、哈希分区

范围分区就是根据数据库表中某一字段的值的范围来划分分区。

列表分区明确指定了根据某字段的某个具体值进行分区,而不是像范围分区那样根据字段的值范围来划分的。

Hash分区表的分区定义包含两个属性,如下:

    modulus: 指Hash分区个数。
    remainder: 指Hash分区键取模余。
 
如果所设置的字段哈希值是一样的,则在同一个分区表

数据库分表功能

# 分表相应参数

_partition_table = True  # 是否分表

_partition_type = 'list'  #   分表类型 :list 列表分区,range 范围分区 ,hash 哈希分区 

_partition_field = 'name'  #   分表字段,字段定义必须为必填

在这里插入图片描述

分区信息配置

在这里插入图片描述

在这里插入图片描述

当升级模块之后 自动建一个分区信息
在这里可以配置分区内容如:
1、按照某种分类列表分区
2、按照年龄区间分区
3、按照字段内容hash

配置完成之后 ,点击初始化分区即可形成分区子表
列表分区和范围分区都有一个默认子表,hash分区不支持

以上操作完成之后,数据自动就会根据规则填充到对应子表

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值