分区表-转载

Chenzw's Blog:http://blog.youkuaiyun.com/ziwen00/article/details/9158725

假设我们现在正在酝酿经营一家图书馆,最初,我们只有十本书提供给大家来阅读和购买。对于十本书而言,我们可能只需要一个书架格子将其作为保存这十本书的容器就足够了,因为任何一个人都可以很轻松的扫一眼就可以将这十本书的书名大概记住,并且挑选出合适自己的书籍来看。
    但是随着我们书籍越来越多,我们需要更大的容器来保存我们的科教类、IT类、历史类、人文类等等书籍,大家都知道的一个生活常识就是,我们肯定不能够将所有类型的书籍都扔到一个书架容器上摆着,最科学的,就是分区,将不同的书籍放到不同的地方去,这样,假如我们在西安五路口的新华书店,那么就只需要跑到四楼的IT分区,去找相关的IT书籍。
    在生活中是这个样子,在数据库中呢?
    现在的数据库业务数据和日志数据,以几何级数的速度在增长着。以我之前从事社保行业为例,社保的日志动辄几十G,其实,其中几乎涵盖了从系统试运行到运行一两年之后的数据,这样一个巨大的表,让数据的逻辑备份、查询、甚至基于日志表的回退都产生了巨大的效率问题。
    如何能够快速有效的删除三个月之前的日志信息,如何能够快速的检索当前月份的信息,如何充分利用多块磁盘空间(裸设备)的物理环境,增加并行度平衡I/O从而改善性能增强数据库的可用性?Oracle在8.0版本之后提出的表的分区功能就是一个非常关键的实用技术。
    早在8.0.5版本中,Oracle就将范围分区技术引入,现在分区功能已经越来越强大,包括支持扩展分区功能、Interval分区、外键分区、模拟列分区、以及分区建议器等。那么,分区到底有什么好处呢?我们为什么要使用分区呢?在什么环境下使用分区比较合适呢?在金牌管理群中,有一个哥们请教一个多用户下一张10W频繁表的增加、删除、修改表的问题,很多朋友给出了修改其成为分区表的建议。其实,这张表能否将其设置为分区表,是需要看具体的业务使用环境的,多用户下频繁的增删改查,我认为应当使用全局临时表而非使用分区表,这个并不是分区表的典型应用环境,相反,应当是全局临时表的应用环境,并且在一本参考书中,找到了一位大牛的建议作为佐证:“分区表应用在大表更合适,至少要大于100万条的记录才可以考虑使用分区表”,例如社保系统中,使用分区表解决日志问题冗余问题就是一个最佳使用场景。
    这个结论是非常容易理解的,就类似于我们最前面引入的一个例子,我们开书店,只有十本书,假设未来也只会有那么几本,那么我们为什么要费尽心思的分成不同的区域呢?那岂不是画蛇添足了么?既不经济也不和谐,只有当我们采购的书籍的量非常大的时候,我们才会去考虑使用分区技术来解决查找效率问题。
    假设现在用户希望找到一本《数据结构》的教科书,我们在100W本书籍里面大海捞针的去找快呢?还是在10W本IT类书籍中去查找快呢?答案是显而易见的。当我们只有10本书呢?我们还会建立分区吗?我们直接肉眼全部扫描一下,直接得到这本书就好了。因此我们需要在特定的环境下选择特定的技术解决方案,目的是追求更高的效能,更高的性能带来的必然是用户更高的满意度,更高的满意度带来的必然是更好的经济效益,更好的经济效益带来的必然是图书管理员们更美好的生活。
 
那么就让我们看一下Oracle提供的分区功能到底有什么样子的好处呢?
 
1)由于Oracle数据库可以将分区指定为不同的表空间,而不同的表空间是可以指向不同的磁盘设备的,在很多时候,磁盘设备的I/O速度是系统进行数据操作的瓶颈,而分区并行,则起到了优化物理硬件资源,从而缩短了执行的时间的作用。
2)分区,就类似于我们将图书分类放到了不同的区间中,这个时候,我们就可以只针对其中的某一类图书进行操作,比如进行该类书籍的查询、上架、下架、甚至将该类图书付之一炬,这带来了两个特别大的优势,第一,我们无视其他分区的数据;第二,我们可以很方便的对本区的数据进行删除操作。
3)提高了特定的查询速度,比如我们现在只需要查找IT类图书的数量,因为我们能够在第一意识中,排除其他非IT类书籍,必然会提高查询的性能。
4)节约维护的成本,传统的维护操作,例如重建索引等,因为有锁机制的存在,是会影响到其他人的读取和更新删除操作的,但是由于有了分区,我们在维护IT类书籍的时候,就不会对其他分类的数据造成影响,这个时候,可以降低因为维护数据而对其他系统数据产生的各种影响。
5)从安全的角度上而言,我们将不同的分区放在不同的表空间当中,就类似于我们没有将所有的鸡蛋放到一个篮子里面,必然会带来安全方面的提升。
 
Oracle提供了下面几种比较常见的分区方式:
 
1)范围分区(partition by range)
 
    我们可以想象范围分区的前提,假如我们现在有100W本书,如果分成10个分区,能够比较平均的将每一类维持在10W本左右,是最理想不过了,这样看起来即工整又漂亮。因此,我们在建立范围分区的时候,如何选择范围分区的依据从而能够让数据均匀分布,是一个需要重点关注的问题。
    在很多情况下,例如上述提到的社保系统中的日志表,使用日期进行分类就是一个比较好的分区方案,因为每个月产生的数据量都是大致相同的。下面,我们通过脚本来创建一个基于月份的范围分区表(假设插入的数据全部都是2013年的数据):
DROP TABLE PART_LOG_CHENZW PURGE;
 
CREATE TABLE PART_LOG_CHENZW(
       LOG_ID NUMBER(20) PRIMARY KEY,
       LOG_DATE DATE,
       LOG_DESC VARCHAR2(20)
)
PARTITION BY RANGE(LOG_DATE)
(
 PARTITION PART_LOG_01 VALUES LESS THAN (TO_DATE('2013-01-01','YYYY-MM-DD')) TABLESPACE DATA,
 PARTITION PART_LOG_02 VALUES LESS THAN (TO_DATE('2013-03-01','YYYY-MM-DD')) TABLESPACE DATA,
 PARTITION PART_LOG_03 VALUES LESS THAN (TO_DATE('2013-05-01','YYYY-MM-DD')) TABLESPACE DATA,
 PARTITION PART_LOG_04 VALUES LESS THAN (TO_DATE('2013-07-01','YYYY-MM-DD')) TABLESPACE DATA,
 PARTITION PART_LOG_05 VALUES LESS THAN (TO_DATE('2013-09-01','YYYY-MM-DD')) TABLESPACE DATA,
 PARTITION PART_LOG_06 VALUES LESS THAN (TO_DATE('2013-10-01','YYYY-MM-DD')) TABLESPACE DATA,
 PARTITION PART_LOG_07 VALUES LESS THAN (MAXVALUE) TABLESPACE DATA
);
 
    上面的例子就是一个使用范围分区的典型例子,在创建表的时候使用PARTITION BY RANGE关键字来指出进行分区的策略,其中PARTITION BY LOG(LOG_DATE)指的是使用LOG_DATE来作为分区的字段,里面根据取值的大小,命名了7个分区来存放数据,每个分区还可以指定不同的表空间,第七个分区使用MAXVALUE来避免有数值没有被上面的范围圈定,这个就类似于SWITCH语法中的DEFAULT,不同的,这个并不是fall through的。
 
    下面,我们来生成10万条数据来插入到表中,查看一下表中发生了什么样子的变化?
INSERT INTO PART_LOG_CHENZW
    (LOG_ID, LOG_DATE, LOG_DESC)
    SELECT LEVEL,
           TO_DATE('2013-01-01', 'YYYY-MM-DD') +
           NUMTODSINTERVAL(CEIL(DBMS_RANDOM.VALUE(0, 365)), 'DAY'),
           LEVEL || 'DESC'
      FROM DUAL
    CONNECT BY LEVEL <= 100000;
 
    首先,我们可以查询一下落在7、8月份的日志记录,就如同我们去新华书店只是去查找IT类的书籍一样,我们知道我们应当去那里寻找名字为PART_LOG_05分区的数据:
SELECT COUNT(1) FROM PART_LOG_CHENZW PARTITION (PART_LOG_05);
下面是在我本机的显示结果:
06:50:40 ChenZw> SELECT COUNT(1) FROM PART_LOG_CHENZW PARTITION (PART_LOG_05);
 
  COUNT(1)
----------
     16981
    通过上面的结果可以很明显的看出,有16981条数据落在了7、8月份的分区中。我们通过指定分区,将全部的注意力只放到此1.6W条左右的数据而不是全部的10W条数据上,可以很明显带来效能的提升。
 
    有一个问题随之而来,我们应当如何知道,图书馆里面都有什么样子的分区呢?我们如何才能知道正确的分区呢?在新华书店中,往往在上电梯的时候,都会有一个指示牌,告诉你,IT类书籍在4楼,人文社科类图书在1楼....其实,Oracle数据库也提供了这个指引牌,那就是下面两个数据字典:DBA_PART_TABLES和DBA_TAB_PARTITIONS,下面我们就翻一下两个“指示牌”中的内容:
 
SQL> 
SELECT T.OWNER AS "所有者",
       T.TABLE_NAME AS "表名",
       T.PARTITIONING_TYPE AS "分区类型",
       T.SUBPARTITIONING_TYPE AS "子分区类型",
       T.PARTITION_COUNT AS "子分区数量",
       T.PARTITIONING_KEY_COUNT AS "分区键中列的数量",
       T.SUBPARTITIONING_KEY_COUNT AS "子分区键中列的数量",
       T.STATUS AS "分区表状态",
       T.DEF_TABLESPACE_NAME AS "默认表空间"
  FROM DBA_PART_TABLES T
 WHERE T.TABLE_NAME IN ('PART_LOG_CHENZW');
 
所有者    表名               分区类型  子分区类型 子分区数量 分区键中列的数量 子分区键中列的数量 分区表状态 默认表空间
-------- -----------------  ------- ---------- ---------- -------------- ---------------- ---------- ------------------------------
CHENZW   PART_LOG_CHENZW    RANGE     NONE     7          1              0                VALID      DATA
 
    通过上面我们可以看到,表PART_LOG_CHENZW现在有7个分区,但是,我们并不能知道这7个分区都是存放什么样子的数据的?我们到什么地方去找到我们希望的7、8月的数据呢?
SQL> 
SELECT T.TABLE_OWNER AS "所有者",
      T.TABLE_NAME AS "表名",
      T.COMPOSITE AS "是否组合分区",
      T.PARTITION_NAME AS "分区名",
      T.SUBPARTITION_COUNT AS "子分区数",
      T.HIGH_VALUE AS "分区上限",
      T.HIGH_VALUE_LENGTH AS "分区上限长度",
      T.PARTITION_POSITION AS "分区在表中位置",
      T.TABLESPACE_NAME AS "所在表空间"
 FROM DBA_TAB_PARTITIONS T
WHERE T.TABLE_NAME IN ('PART_LOG_CHENZW')
/
 
所有者  表名             是否组合分区 分区名         子分区数 分区上限                                                                         分区上限长度 分区在表中位置 所在表空间
------- ---------------- ------------ ------------ ---------- -------------------------------------------------------------------------------- ------------ -------------- ----------
CHENZW  PART_LOG_CHENZW  NO           PART_LOG_01           0 TO_DATE(' 2013-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA           83              1 DATA
CHENZW  PART_LOG_CHENZW  NO           PART_LOG_02           0 TO_DATE(' 2013-03-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA           83              2 DATA
CHENZW  PART_LOG_CHENZW  NO           PART_LOG_03           0 TO_DATE(' 2013-05-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA           83              3 DATA
CHENZW  PART_LOG_CHENZW  NO           PART_LOG_04           0 TO_DATE(' 2013-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA           83              4 DATA
CHENZW  PART_LOG_CHENZW  NO           PART_LOG_05           0 TO_DATE(' 2013-09-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA           83              5 DATA
CHENZW  PART_LOG_CHENZW  NO           PART_LOG_06           0 TO_DATE(' 2013-10-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA           83              6 DATA
CHENZW  PART_LOG_CHENZW  NO           PART_LOG_07           0 MAXVALUE                                                                                    8              7 DATA
 
7 rows selected
    从上面的结果可以看到,如果我们希望找到7、8月份的数据,就可以根据分区上限定位到PART_LOG_05分区。
 
    最后,我们可以通过查询数据字典USER_SEGMENTS来查看分区表占用的磁盘空间信息,如下:
SELECT T.SEGMENT_NAME AS "段名",
       T.PARTITION_NAME AS "分区名",
       T.SEGMENT_TYPE AS "分区类型",
       T.BYTES / POWER(1024, 2) || 'M' AS "分区大小",
       T.TABLESPACE_NAME AS "表空间"
  FROM USER_SEGMENTS T
 WHERE T.SEGMENT_NAME IN ('PART_LOG_CHENZW');
 
    得到的结果如下:
段名             分区名       分区类型           分区大小   表空间
---------------- ------------ ------------------ ---------- -------
PART_LOG_CHENZW  PART_LOG_01  TABLE PARTITION    .0625M     DATA
PART_LOG_CHENZW  PART_LOG_02  TABLE PARTITION    .5625M     DATA
PART_LOG_CHENZW  PART_LOG_03  TABLE PARTITION    .5625M     DATA
PART_LOG_CHENZW  PART_LOG_04  TABLE PARTITION    .5625M     DATA
PART_LOG_CHENZW  PART_LOG_05  TABLE PARTITION    .625M      DATA
PART_LOG_CHENZW  PART_LOG_06  TABLE PARTITION    .3125M     DATA
PART_LOG_CHENZW  PART_LOG_07  TABLE PARTITION    .875M      DATA
 
7 rows selected
 
2)列表分区(partition by list)
   假设我们现在只有四种类型的10W本图书,分别为0 教育类、1 IT类、2 人文类、3社科类,只有这四种情况,我们就可以通过图书的类型进行分区。通常情况下,如果你的数据中的某一项是可以被枚举的,那么,此列就可以用作列表分区的分区字段。
DROP TABLE PART_BOOK_CHENZW PURGE;
 
CREATE TABLE PART_BOOK_CHENZW(
       BOOK_ID NUMBER(20) PRIMARY KEY,
       BOOK_DATE DATE,
       BOOK_TYPE NUMBER(2) NOT NULL,
       BOOK_DESC VARCHAR2(20)
)
PARTITION BY LIST(BOOK_TYPE)
(
 PARTITION PART_BOOK_01 VALUES(0) TABLESPACE DATA,
 PARTITION PART_BOOK_02 VALUES(1) TABLESPACE DATA,
 PARTITION PART_BOOK_03 VALUES(2) TABLESPACE DATA,
 PARTITION PART_BOOK_04 VALUES(3) TABLESPACE DATA
);
 
下面的脚本用于生成相应的数据:
INSERT INTO PART_BOOK_CHENZW
    (BOOK_ID, BOOK_DATE, BOOK_TYPE,BOOK_DESC)
    SELECT LEVEL,
           TO_DATE('2013-01-01', 'YYYY-MM-DD') +
           NUMTODSINTERVAL(CEIL(DBMS_RANDOM.VALUE(0, 365)), 'DAY'),
           MOD(LEVEL,4),
           LEVEL || 'DESC'
      FROM DUAL
    CONNECT BY LEVEL <= 100000;
 
3)散列分区(partition by hash)
    个人觉着散列分区的更多的作用在于分散数据,通过将数据均匀分布从而规避I/O瓶颈,但是这个在平时的生产中确实比较少用到,所以,建议仅仅作为了解了。
DROP TABLE PART_BOOK_CHENZW PURGE;
 
CREATE TABLE PART_BOOK_CHENZW(
       BOOK_ID NUMBER(20) PRIMARY KEY,
       BOOK_DATE DATE,
       BOOK_TYPE NUMBER(2) NOT NULL,
       BOOK_DESC VARCHAR2(20)
)
PARTITION BY HASH(BOOK_ID)
(
 PARTITION PART_BOOK_01 TABLESPACE DATA,
 PARTITION PART_BOOK_02 TABLESPACE DATA,
 PARTITION PART_BOOK_03 TABLESPACE DATA,
 PARTITION PART_BOOK_04 TABLESPACE DATA
);
 
INSERT INTO PART_BOOK_CHENZW
    (BOOK_ID, BOOK_DATE, BOOK_TYPE,BOOK_DESC)
    SELECT LEVEL,
           TO_DATE('2013-01-01', 'YYYY-MM-DD') +
           NUMTODSINTERVAL(CEIL(DBMS_RANDOM.VALUE(0, 365)), 'DAY'),
           MOD(LEVEL,4),
           LEVEL || 'DESC'
      FROM DUAL
    CONNECT BY LEVEL <= 100000;
 
4)组合分区(partition by xxx subpartition by xxx)
    假如我们现在有10W本月刊类杂志提供给消费者查看和购买,我们如何做分区合适呢?首先我们可以先将图书根据种类进行分区,然后再对每个分区进行月份的分区,这样对于大量的图书而言,我们就可以根据实际的业务需要,将一大堆数据通过分区拆解为若干个小标进行管理,从而降低了管理的粒度,做到“精细化管理”。
 
    下面是一个进行组合分区的例子:
--删除测试表
DROP TABLE PART_BOOK_CHENZW PURGE;
 
--创建列表-范围组合分区
CREATE TABLE PART_BOOK_CHENZW(
       BOOK_ID NUMBER(20) PRIMARY KEY,
       BOOK_DATE DATE,
       BOOK_TYPE NUMBER(2) NOT NULL,
       BOOK_DESC VARCHAR2(20)
)
PARTITION BY LIST(BOOK_TYPE)
SUBPARTITION BY RANGE(BOOK_DATE)
SUBPARTITION TEMPLATE
(
 SUBPARTITION PART_LOG_01 VALUES LESS THAN (TO_DATE('2013-01-01','YYYY-MM-DD')) TABLESPACE DATA,
 SUBPARTITION PART_LOG_02 VALUES LESS THAN (TO_DATE('2013-03-01','YYYY-MM-DD')) TABLESPACE DATA,
 SUBPARTITION PART_LOG_03 VALUES LESS THAN (TO_DATE('2013-05-01','YYYY-MM-DD')) TABLESPACE DATA,
 SUBPARTITION PART_LOG_04 VALUES LESS THAN (TO_DATE('2013-07-01','YYYY-MM-DD')) TABLESPACE DATA,
 SUBPARTITION PART_LOG_05 VALUES LESS THAN (TO_DATE('2013-09-01','YYYY-MM-DD')) TABLESPACE DATA,
 SUBPARTITION PART_LOG_06 VALUES LESS THAN (TO_DATE('2013-10-01','YYYY-MM-DD')) TABLESPACE DATA,
 SUBPARTITION PART_LOG_07 VALUES LESS THAN (MAXVALUE) TABLESPACE DATA
)
(
 PARTITION PART_BOOK_01 VALUES(0) TABLESPACE DATA,
 PARTITION PART_BOOK_02 VALUES(1) TABLESPACE DATA,
 PARTITION PART_BOOK_03 VALUES(2) TABLESPACE DATA,
 PARTITION PART_BOOK_04 VALUES(3) TABLESPACE DATA
);
--生成测试数据
INSERT INTO PART_BOOK_CHENZW
    (BOOK_ID, BOOK_DATE, BOOK_TYPE,BOOK_DESC)
    SELECT LEVEL,
           TO_DATE('2013-01-01', 'YYYY-MM-DD') +
           NUMTODSINTERVAL(CEIL(DBMS_RANDOM.VALUE(0, 365)), 'DAY'),
           MOD(LEVEL,4),
           LEVEL || 'DESC'
      FROM DUAL
    CONNECT BY LEVEL <= 100000;
 
上面的组合分区和单一的范围分区有什么区别呢?我们通过查询数据字典看一下:
SQL>
SELECT T.TABLE_OWNER AS "所有者",
      T.TABLE_NAME AS "表名",
      T.COMPOSITE AS "是否组合分区",
      T.PARTITION_NAME AS "分区名",
      T.SUBPARTITION_COUNT AS "子分区数",
      T.HIGH_VALUE AS "分区上限",
      T.HIGH_VALUE_LENGTH AS "分区上限长度",
      T.PARTITION_POSITION AS "分区在表中位置",
      T.TABLESPACE_NAME AS "所在表空间"
 FROM DBA_TAB_PARTITIONS T
WHERE T.TABLE_NAME IN ('PART_BOOK_CHENZW')
/
 
所有者  表名              是否组合分区 分区名          子分区数 分区上限 分区上限长度 分区在表中位置 所在表空间
------- ----------------- ------------ ------------- ---------- -------- ------------ -------------- -----------
CHENZW  PART_BOOK_CHENZW  YES          PART_BOOK_01           7 0                   1              1 DATA
CHENZW  PART_BOOK_CHENZW  YES          PART_BOOK_02           7 1                   1              2 DATA
CHENZW  PART_BOOK_CHENZW  YES          PART_BOOK_03           7 2                   1              3 DATA
CHENZW  PART_BOOK_CHENZW  YES          PART_BOOK_04           7 3                   1              4 DATA
重点在上述分区的“子分区数”,我们可以看到,每一个按照列表的分区下面,又被按照日期被分为7个分区。
iPhone用户必看:不装App也能搞定GitHub 2FA验证的3种方法(附恢复码管理技巧) 本文为iPhone用户提供了无需安装第三方App即可完成GitHub双重身份验证(2FA)的三种原生方案:利用相机扫码与iCloud钥匙串自动填充、使用iCloud钥匙串内置的TOTP验证码生成器,以及借助Safari浏览器扩展。文章详细解析了每种方法的操作步骤、适用场景,并重点强调了恢复码的安全管理与多层备份策略,帮助开发者在提升账户安全的同时,享受苹果生态的无缝便捷体验。 阅读详情

相关推荐

FPGA之道(22)VHDL基本程序框架

在介绍详细的VHDL语法之前,让我们先来了解一下VHDL代码的基本程序框架,这样可以让我们先对VHDL程序设计有一个整体的概念把握,进而在后续的VHDL语法学习中做到有的放矢。

Reborn Lee 8309

Oracle 11g 新特性 ---分区新特性

# 概要 Oracle 11g中引进的分区新功能 Interval 分区(Interval Partitioning). 扩展的复合分区(Extended Composite Partitioning). 系统分区(System Partitioning). 虚拟列分区(Vitual Column Partitioning). 关联分区或叫参考分区(Reference Partitioning). # 概述与限制 ## Interval 分区 它属于范围分区。这种分区不需要定义MAXVALU

Elemi的专栏 869

Appstore 3.2(f)违规自救指南:从触发到申诉的完整应对策略

本文详细解析了Appstore 3.2(f)违规的应对策略,从触发原因到申诉流程,帮助开发者有效自救。文章涵盖隐瞒行为、账户关联和信息造假三大违规场景的判定逻辑,并提供申诉信写作的黄金法则和长期合规防御措施,确保开发者能够顺利通过苹果审核。

weixin_29304985的博客 664

19.2 Partitioning Types--range 分区

19.2 Partitioning Types [+/-]19.2.1 RANGE Partitioning 19.2.2 LIST Partitioning 19.2.3 COLUMNS Partitioning 19.2.4 HASH Partitioning 19.2.5 KEY Partitioning 19.2.6 Subpartitioning 19.2.7 How MyS

zhaoyangjian724的专栏 742

SAP MM新手避坑指南:工厂间调拨用301还是303?手把手教你选对移动类型

本文深入解析SAP MM模块中工厂间调拨的301与303移动类型,帮助新手避开常见陷阱。通过对比一步法(301)和两步法(303+305)的核心差异、适用场景及财务影响,提供清晰的决策框架和实战技巧,确保库存调拨的准确性和效率。

weixin_29223603的博客 351

深度解析跨境支付之业务架构

详解跨境支付之业务架构

weixin_47493863的博客 1880

Oracle数据库分区--实例

分区表通过对分区列进行判断,把满足不同条件的分区列对应的记录保存在不同的分区中。一、何为分区表什么情况下会使用分区表?表中已有大量数据,或预计到表中将会保存大量的数据可以按照预期(月份、区域、dml)对表中的数据执行查询和更新什么是分区键?创建分区表,需要分区键;分区表的每一列都明确的归属一个分区,划分的依据就是分区键。有如下特点:由1~~16个列顺序组成不能包含Le...

weixin_34351321的博客 288

CentOS 7 安装 Python 3.10

我这里已经软链接了,正常未链接之前是python->python2.7而不是python3.10。python2.7默认安装是在 /usr/bin目录中,切换到/usr/bin/更改yum配置,因为其要用到python2才能执行,否则会导致yum不能正常使用。2. 安装 Python 3.10 必需的 openssl >= 1.1.1。默认的centos7是没有安装pip,先添加epel扩展源。/usr/bin/python 修改为如下。添加软链接,将原来的链接备份。添加python3的软链接。

bensonyang888的博客 2907

oracle 11g分区表类型,oracle 11g 分区表

查看所有用户分区表及分区策略(1、2级分区表均包括):SELECT p.table_name AS 表名, decode(p.partitioning_key_count, 1, '主分区') AS 分区类型,p.partitioning_type AS 分区类型, p.column_name AS 分区键,decode(nvl(q.subpartitioning_key_count, 0), 0...

weixin_32900811的博客 292

【GlobalMapper精品教程】070:专题地图制作完整操作教程

与其它GIS软件一样,Globalmapper也可以制作出漂亮的地图,本文讲解专题地图制作完整操作流程。

智慧空间实验室 3757

【ROS机器人系统】实验4 ROS简单应用:激光SLAM与导航

ROS简单应用:激光SLAM与导航 (1)了解机器人和SLAM之间关系 (2)了解激光SLAM (3)了解gmapping和导航

南京大学软件工程硕士在读 2148

oracle创建分区表,以及非分区表转分区表(转载)

什么是分区表,分区表详解:http://langgufu.iteye.com/blog/1552042 本文原出处: http://blog.csdn.net/tianlesoftware/archive/2009/10/23/4717318.aspx   将普通表转换成分区表有4种方法:        1. Export/import method        2. Inser...

正走向大牛的菜鸟 247

错误代码:11300001 数据集 [xxx] 配置错误“=”附近有语法错误(原理分析)

错误代码:11300001 数据集 [1_Workshift] 配置错误“=”附近有语法错误。

码农研究僧的博客 916

SqlServer分区表概述(转载)

什么是分区表 一般情况下,我们建立数据库表时,表数据都存放在一个文件里。 但是如果是分区表的话,表数据就会按照你指定的规则分放到不同的文件里,把一个大的数据文件拆分为多个小文件,还可以把这些小文件放在不同的磁盘下由多个cpu进行处理。这样文件的大小随着拆分而减小,还得到硬件系统的加强,自然对我们操作数据是大大有利的。 所以大数据量的数据表,对分区的需要还是必要的,因为它可以提高se...

davy57345的博客 145

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

oracle 分区 ppt,【转载】oracle 分区表详解

一、分区表的概述:Oracle的表分区功能通过改善可管理性、性能和可用性,从而为各式应用程序带来了极大的好处。通常,分区可以使某些查询以及维护操作的性能大大提高。此外,分区还可以极大简化常见的管理任务,分区是构建千兆字节数据系统或超高可用性系统的关键工具。分区功能能够将表、索引或索引组织表进一步细分为段,这些数据库对象的段叫做分区。每个分区有自己的名称,还可以选择自己的存储特性。从数据库管理员的角...

weixin_33138295的博客 213

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

关于ORACLE 分区表的文章,转载一下

关于ORACLE 分区表的文章,转载一下。 1.1 分区表PARTITION table 在ORACLE里如果遇到特别大的表,可以使用分区的表来改变其应用程序的性能。 1.1.1 分区表的建立: 某公司的每年产生巨大的...

congxia5894的博客 141

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Oracle 分区表使用和查询(转载)

转自:http://blog.csdn.net/mzglzzc/article/details/46300645 一  创建和使用分区表 1.范围分区(RANGE) 范围分区将数据基于范围映射到每一个分区,这个范围是你在创建分区时指定的分区键决定的。这种分区方式是最为常用的,并且分区键经常采用日期。当使用范围分区时,请考虑以下几个规则: 1)每一个分区都必须有一个VAL

woailyoo0000的博客 7472

oracle分区表带入SQL语句,Oracle 分区表常用SQL语句 (转载)

*********为分区表建立一个单独的表空间*********/create tablespace ts_partition datafile '/home/oracle/oradata/esales/partition.dbf' size 10Mextent management local uniform size 2M;/*********建立分区表*********/create tab...

weixin_39850062的博客 327

(转载)oracle分区表

一. 分区表理论知识        Oracle提供了分区技术以支持VLDB(Very Large DataBase)。分区表通过对分区列的判断,把分区列不同的记录,放到不同的分区中。分区完全对应用透明。        Oracle的分区表可以包括多个分区,每个分区都是一个独立的段(SEGMENT),可以存放到不同的表空间中。查询时可以通过查询表来访问各个分区中的数据,也可以通过在查询时直接...

lumingming1987的博客 136

Oracle中分区表的使用(转载)

Oracle中分区表的使用(转载) Oracle中分区表的使用本文作者Dinya (dinya20@tom.com)摘要:在大量业务数据处理的项目中,可以考虑使用分区表来提高应用系统的性能并方便数据管理,本文详细介绍了分区表的使...

99

PySaprk 将 DataFrame 数据保存为 Hive 分区表--转载

PySaprk 将 DataFrame 数据保存为 Hive 分区表 创建 SparkSession from pyspark.sql import SparkSession spark = SparkSession.builder.enableHiveSupport().appName('test_app').getOrCreate() sc = spark.sparkContext hc = HiveContext(sc) 1 2 3 4 5 1. Spark创建分区表 # 可以

z7one 1736

转载的。sql server 分区表的一些操作-190925

本文转载的,如侵权,请告知立删。 目的,仅作为 查看时,不再用去查找 。 原文链接:https://blog.csdn.net/exceptionalboy/article/details/78851327 1 需求说明 将数据库Demo中的表按照日期字段进行水平分区分表。要求数据文件按一年一个文件存储,且分区的分割点会根据时间的增长自动添加(例如现在是2017年1...

qq_29072459的博客 175

分区表--SQLServer普通表转为分区表(转载)

我们的数据库已经投入使用一段时间了,但是当时没有创建创建分区表,现在我们需要做的是将普通表转换成分区表,但是并不能影响我们数据库里面的数据,那么我们应该如何做呢?只需在该表上创建一个聚集索引,并在该聚集索引中使用分区方案即可。说的很简单,但是在实现实现可就没有那么容易了,因为你的数据库中存在主键,外键等约束关系,那么我们在将普通表转换成分区表时,首先就需要解决这些问题。我们知...

weixin_34292287的博客 505

转载:SQL Server 2008-建立分区表(Table Partition) 转载

转载:SQL Server 2008-建立分区表(Table Partition) 转载 数据库结构和索引的是否合理在很大程度上影响了数据库的性能,但是随着数据库信息负载的增大,对数据库的性能也发生了很大的影响。可能我们的数据库在一开始有着很高的性能,但是随着数据存...

diaochejiang2761的博客 155

Oracle 分区表常用SQL语句 (转载)

*********为分区表建立一个单独的表空间*********/create tablespace ts_partition datafile /home/oracle/oradata/esales/partition.dbf size 10Mextent management local uniform size 2M;/*********建立分区表*********/create tab

zliu789的专栏 2268
上一篇: 定时器-监控是否可访问URL资源
下一篇: WebService小例子
vortex331
博客等级 码龄16年 0粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值