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分区不支持

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
Odoo是一款开源的企业管理软件,提供了丰富的API和模块,可以方便地实现批量新增功能。 以下是一个简单的示例代码,实现Odoo中批量新增产品的功能: ```python from odoo import models, fields, api class Product(models.Model): _name = 'product.product' _description = 'Product' name = fields.Char(string='Name', required=True) description = fields.Text(string='Description') list_price = fields.Float(string='Price') class ProductBatchInsertWizard(models.TransientModel): _name = 'product.batch_insert_wizard' _description = 'Product Batch Insert Wizard' data_file = fields.Binary(string='Data File', required=True) @api.multi def batch_insert(self): # 读取数据文件 data = pd.read_excel(io.BytesIO(base64.b64decode(self.data_file)), sheet_name='Sheet1') # 批量新增 for index, row in data.iterrows(): product = self.env['product.product'].create({ 'name': row['Name'], 'description': row['Description'], 'list_price': row['Price'] }) return {'type': 'ir.actions.act_window_close'} ``` 在以上示例代码中,我们定义了一个产品模型 Product 和一个批量新增向导 ProductBatchInsertWizard。批量新增向导中包含一个数据文件字段 data_file,用于上传批量新增的数据文件,和一个批量新增函数 batch_insert,用于执行批量新增操作。 在批量新增函数中,我们使用 pandas 库读取上传的 Excel 文件,并使用 iterrows() 方法遍历每一行数据,依次调用 create() 方法创建产品,并将产品数据存储到数据库中。最后,我们返回一个动作,关闭批量新增向导窗口。 需要注意的是,以上代码仅为示例代码,实际应用中需要根据具体业务需求进行适当修改。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值