postgresql分区(引用)

1 建立大表。
   2 创建分区继承
   3 定义Rule或者Trigger?

1 建立大表    
    CREATE TABLE student (student_id bigserial, name varchar(32), score smallint)

2 创建分区继承

    1. CREATE TABLE student_qualified (CHECK (score >= 60 )) INHERITS (student) ;
    2. CREATE TABLE student_nqualified (CHECK (score < 60)) INHERITS (student) ;

3 定义Rule或者Trigger

(1)创建rule

CREATE OR REPLACE RULE insert_student_qualified 
AS ON INSERT TO student 
 WHERE score >= 60
DO INSTEAD

INSERT INTO student_qualified VALUES(NEW.*);

CREATE OR REPLACE RULE insert_student_nqualified

AS ON INSERT TO student

WHERE score < 60

DO INSTEAD

INSERT INTO student_nqualified VALUES(NEW.*);

(2)创建方法及触发器

REATE OR REPLACE FUNCTION student_insert_trigger()
RETURNS TRIGGER AS 
$$

        BEGIN
        IF(NEW.score

>= 60) THEN

        INSERT

INTO student_qualified VALUES (NEW.*);

        ELSE

        INSERT

INTO student_nqualified VALUES (NEW.*);

        END

IF;

        RETURN

NULL;

      END;

$$

LANGUAGE plpgsql ;

//创建触发器

REATE TRIGGER insert_student 
 BEFORE INSERT ON student
    FOR EACH row
 EXECUTE PROCEDURE student_insert_trigger() ;

时间: 2025-01-02 04:11:08

postgresql分区(引用)的相关文章

PostgreSQL分区介绍

PostgreSQL支持基本的表分区功能.本文描述为什么需要表分区以及如何在数据库设计中使用表分区. 1. 概述 分区的意思是把逻辑上的一个大表分割成物理上的几块.分区可以提供若干好处: 某些类型的查询性能可以得到极大提升.特别是表中访问率较高的行位于一个单独分区或少数几个分区上的情况下.分区可以减少索引体积从而可以将高使用率部分的索引存放在内存中.如果索引不能全部放在内存中,那么在索引上的读和写都会产生更多的磁盘访问. 当查询或更新一个分区的大部分记录时,连续扫描那个分区而不是使用索引离散的访

转载:postgresql分区与优化

--对于分区表constraint_exclusion 这个参数需要配置为partition或on postgres=# show constraint_exclusion ; constraint_exclusion ---------------------- partition --创建父子表, 用于存储分区数据 create table t(id int primary key); create table t1(like t including all) inherits(t); cr

5、分区格式化、压缩、挂载、解压 学习笔记

文件系统: MBR: Master Boot Record, 主引导记录(512bytes存在第0扇区) 512bytes: bootloader: 446bytes fat: 64bytes, 16bytes, 4 MBR有效性标记:5A 至多4主分区,可以3主分区1扩展分区(扩展分区引用额外的分区表),要使用扩展分区需在扩展分区中再另行划分逻辑分区 硬盘接口: IDE(ATA).SCSI.SATA(6Gbps).SAS(6Gbps) fdisk /dev/sda d: 删除 l: 列出内核支

关于oracle分区技术--初了解

一.  分区类型 1. 范围分区(Range Partitioning) 适用于  连续/按时间排序的数据 2. 散列分区(Hash Partitioning) 适用于  不连续/数据记录固定的数据 3. 组合分区 Range-Hash Range-List 4. 列表分区 List Partitioning 适用于对不连续域的数据分区 更准确的控制数据的分区存储 适用于 位置类数据 二.  分区表的维护 准备工作 [email protected]>create tablespace sale

硬盘分区管理

硬盘分区管理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在了解文件系统之前,我们要学习一下磁盘存储数据的方式,大家都知道文件从内存若要持久化存储的话就得把它存到硬盘上,想毕都知道文件存入磁盘都是二进制存取的.那么硬盘是如何存储的呢?我们现在标配基本上都是1T呢,现在都是2017了,500G的硬盘都已经遭嫌弃了. 1.生活小知识. 上面是一幅图可以看到,有磁头,而且这个磁头是悬浮在盘面上的,如果这个盘面有震动,很可能直接滑到盘面,导致上面写的数据被划掉,造成数据丢失,因此,

oracle 11g 新增分区

oracle 11g新增了间隔分区.虚拟列分区和引用分区.详细的介绍请查看官方文件: Creating Partitions 1. 间隔分区 间隔分区是范围分区的一种扩展.在引入间隔分区之前,DBA 需要显式定义每个分区的值范围,随着分区值的增长可用分区会逐渐减少直到没有可使用的分区为止.而间隔分区就是为了解决插入表中的数据超过了所有范围分区时而不能自动创建分区的问题.必须至少创建一个范围分区,范围分区的键值确定范围分区的上限值,超过该上限值数据库服务器自动创建特定间隔的分区.主要用在可预知的添

ORACLE表、索引和分区

一.数据库表 每种类型的表都有不同的特性,分别应用与不同的领域 堆组织表 聚簇表(共三种) 索引组织表 嵌套表 临时表 外部表和对象表 1.行迁移 建表过程中可以指定以下两个参数:  PCTFREE:自由空间,默认值10 PCTUSED(只适用于MSSM):默认值40 设置这两个参数很重要:  一方面避免迁移过多的行,影响性能  一方面避免浪费太多的空间 当自由空间存不下更新后的某一行时,这一行将会发生行迁移,在两个块上存储这一行数据,如下图: 2.堆组织表 基本上我们使用的表都是堆组织表(he

Oracle——分区表

转载请注明出处:http://blog.csdn.net/anxpp/article/details/51869335,谢谢! 下例中的表设计并不一定,仅作演示使用. 1.概述 即使业务拆分,有时还是不能避免某张表的数据(行数)过多. 当单表数据过多时,会影响整体的性能,查询将变得更慢,数据的备份恢复也会花费更多时间. However,数据库一般都提供了一个将单表拆分成多张表的机制,以更容易的管理表和解决性能问题.这种方式(把表的行分为多个部分)划分表数据的方法就是对表的分区.被分区的表是分区表

G1 垃圾收集器

概念先知 什么是垃圾回收 简单的说垃圾回收就是回收内存中不再使用的对象. 垃圾回收的基本步骤: 查找内存中不再使用的对象 释放这些对象占用的内存 查找内存中不再使用的对象 如何判断哪些对象不再被使用呢?有2个方法: 引用计数法 引用计数法就是如果一个对象没有被任何引用指向,则可视之为垃圾.这种方法的缺点就是不能检测到环的存在. 根搜索算法 根搜索算法的基本思路就是通过一系列名为"GC Roots"的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference