分区表

DB2分区表如何区分索引是分区索引还是非分区索引

一世执手 提交于 2020-01-22 15:59:30
问题描述 : 经常有人问,我分区表里的索引到底是分区索引还是非分区索引? 因为是否是分区索引涉及到detach分区的时候是否会耗费大量的时间做异步索引清理:如果是非分区索引,则异步索引清理需要大量时间。 总体结论 : --对于唯一索引或者主健,如果包含了分区健,则默认是分区索引;如果不包含分区健,则默认是非分区索引。 --对于非唯一索引,默认都是分区索引。 测试过程 DB2版本为10.5 $ db2 "create table p1 (col1 int not null, col2 int not null, col3 int not null) partition by range(col2)(partition part1 starting 1 ending 5, partition part2 starting 6 ending 10, partition part3 starting 11 ending 15)" 1. 唯一索引 $ db2 "create unique index u_idx1 on p1 (col1)" $ db2 "create unique index u_idx1_2 on p1 (col1,col2)" $ db2 "create unique index u_idx1_3 on p1 (col1,col3)" $ db2look -d

Hive归档分区表

随声附和 提交于 2020-01-22 02:08:57
背景 Hive可以把分区表的分区归档成HAR文件,也可以把归档完的分区进行解压。 以下步骤基于Hadoop2.8.5和Hive2.3.5 步骤 1、把hadoopHome/share/hadoop/tools/lib/hadoop-archives-2.8.5.jar放到hiveHome/lib目录下 2、在hiveHome/conf/hive-site.xml中使能分区归档 <property> <name>hive.archive.enabled</name> <value>true</value> </property> 3、对于某个分区表,分区归档命令如下 alter table employees archive partition(country='US'); 然后可以在hive中查看压缩结果 dfs -ls /user/hive/warehouse/employees/country=US 结果如下,可以看到在分区目录下生成了data.har文件,就是归档文件 4、对于归档后的分区表,解压的命令如下所示 alter table employees unarchive partition(country='US'); 然后可以在hive中查看压缩结果 dfs -ls /user/hive/warehouse/employees/country=US 输出如下 结语

MySQL中的分区表

痴心易碎 提交于 2020-01-16 10:13:26
对用户来说,分区表是一个独立的逻辑表,但是底层是由多个物理子表组成。实现分区的代码实际上是对一组底层表的句柄对象的封装。对分区表的请求,都会通过句柄对象转化成存储引擎的接口调用。分区表在很多场景中可以起到非常大的作用,但是其本身也存在一些限制。以下对MySQL中的分区表作一个简单的归纳。 01 分区表的原理 1、MySQL在创建时使用PARTITION BY子句定义每个分区存放的数据。 2、分区的一个主要目的是将数据按照一个较粗的粒度分在不同的表中。 3、分区表的数据更容易维护。 4、分区表的数据可以分布在不同的物理设备上。 5、一个表最多只能有1024个分区。 6、分区表达式必须是整数,或者是返回整数的表达式。 7、如果分区字段中有主键或者唯一索引的列,那么所有主键列和唯一索引列都必须包含进来。 8、分区表中无法使用外键约束。 9、分区表由多个相关的底层表实现。 10、分区表的索引只是在各个底层表上各自加上一个完全相同的索引。 11、从存储引擎的角度来看,底层表和一个普通表没有任何不同。 12、分区表的每个操作都会“先打开并锁定所有的底层表”。 13、如果存储引擎能够自己实现行级锁,例如InnoDB,则会在分区层释放对应表锁。 02 分区表的类型 分区表的类型主要有以下几种: (1)根据范围进行分区。每个分区存储落在某个范围的分区,表达式可以是列,也可以是包含列的表达式。 (2

Hive(5)-DDL数据定义

笑着哭i 提交于 2020-01-16 06:42:59
一. 创建数据库 CREATE DATABASE [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES (property_name=property_value, ...)]; 字段解释: 1). IF NOT EXISTS : 避免要创建的数据库已经存在 2). COMMENT : 给数据库添加一个备注 3). LOCATION : 如果不指定路径,默认的存储路径是HDFS的/user/hive/warehouse/*.db 4). WITH DBPROPERTIES : 给数据库添加一些自定的<key,value> create database if not exists hive_db comment 'my fisrt database' location '/first_database' with dbproperties ('createtime' = '20181218'); Hive默认不支持中文,但是可以改 1). 修改hive_site.xml中的参数 <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://hadoop102

msyql分区与分库分表

拈花ヽ惹草 提交于 2020-01-16 05:38:45
分区 工作原理 对用户而言,分区表是一个独立的逻辑表,但是底层MySQL将其分成多个物理子表,这对用户来说是透明的,每一个分区表都会使用一个独立的表文件。 如果数据量比较大,可以进行分区。分区对PHP层面是无感知的,对代码没有改变。但是需要对mysql的表来做一个物理层面的拆分。将数据通过一些策略进行拆分,客户也是无感知的,对业务逻辑也没有什么影响。 创建表时使用partition by 子句定义每个分区存放的数据,比如年龄,地区等等。执行查询时, 优化器 会根据分区定义过滤那些没有我们需要数据的分区,这样查询只需要查询所需数据存在的分区即可。 目的 将数据按照一个较粗的力度分在不同的表中,这样可以将相关的数据存放在一起。而且如果想一次性删除整个分区的数据也很方便。 使用场景 表非常大或者只在表的最后有热点数据,其它都是历史数据。可以分区 分区表的数据更容易维护,可以对独立的分区进行独立的操作,就相当于独立的表,不过用户感知不到 分区表的数据可以分布在不同的机器上,从而高效利用资源。 可以使用分区表来避免某些特殊的瓶颈。比如数据库的特殊查询等等。 可以备份和恢复独立的分区。 限制 一个表最多只能有1024个分区 最好用mysql5.5以上的,可以使用列分区。否则mysql中含有null会使分区过滤无效。 分区字段中如果有主键 和唯一索引列,那么主键列和唯一列都必须包含进来。

SQL Server表分区

你说的曾经没有我的故事 提交于 2020-01-13 23:21:24
SQL Server表分区 什么是表分区 一般情况下,我们建立数据库表时,表数据都存放在一个文件里。 但是如果是分区表的话,表数据就会按照你指定的规则分放到不同的文件里,把一个大的数据文件拆分为多个小文件,还可以把这些小文件放在不同的磁盘下由多个cpu进行处理。这样文件的大小随着拆分而减小,还得到硬件系统的加强,自然对我们操作数据是大大有利的。 所以大数据量的数据表,对分区的需要还是必要的,因为它可以提高select效率,还可以对历史数据经行区分存档等。但是数据量少的数据就不要凑这个热闹啦,因为表分区会对数据库产生不必要的开销,除啦性能还会增加实现对象的管理费用和复杂性。 跟着做,分区如此简单 先跟着做一个分区表(分为11个分区),去除神秘的面纱,然后咱们再逐一击破各个要点要害。 分区是要把一个表数据拆分为若干子集合,也就是把把一个数据文件拆分到多个数据文件中,然而这些文件的存放可以依托一个文件组或这多个文件组,由于多个文件组可以提高数据库的访问并发量,还可以把不同的分区配置到不同的磁盘中提高效率,所以创建时建议分区跟文件组个数相同。 1.创建文件组 可以点击数据库属性在文件组里面添加 T-sql语法: alter database <数据库名> add filegroup <文件组名> ---创建数据库文件组 alter database testSplit add

分区表的本地索引竟然失效了——ORA-01502

徘徊边缘 提交于 2020-01-08 10:30:00
由于昨天对一个千万级别的分区表做了分区数据交换的操作,因为本表操作太慢,所以将其移出普通表操作后才移回分区表,但是今天又反馈该表的某字段为条件查询速度很慢,自己试了下果真如此,我看了查询语句的执行计划发现根本没用上索引(该字段是一个本地索引),因此就想用hint强制使用该索引,结果报错了ora-01502. 本地索引失效了?我很纳闷,什么原因导致的呢,难不成是我昨晚的操作导致的?因此网上一查,看到该博文http://diegoball.iteye.com/blog/575786,终于明白了,因为操作时该表具有主键,因此没法加上 INCLUDING INDEXES 这个子句,尽管后来因为主键被别的表引用必须disable才能交换数据,但是也没有加上该子句,因此就导致我操作的这个分区的所有本地索引都失效了。 查看本地索引状态: SELECT index_name, partition_name, status FROM user_ind_partitions WHERE index_name = '&index_name'; 发现失效当然就得赶紧重建下失效的索引 alter index index_name rebuild partition partition_name ONLINE; 来源: https://www.cnblogs.com/lanzi/archive/2013/01

oracle创建分区表

走远了吗. 提交于 2020-01-01 12:59:39
实验3:创建分区表 实验目的: 掌握分区表的创建方法,掌握各种分区方式的使用场景。 实验内容: 本实验使用3个表空间:USERS,USERS02,USERS03。在表空间中创建两张表:订单表(orders)与订单详表(order_details)。 使用你自己的账号创建本实验的表,表创建在上述3个分区,自定义分区策略。 你需要使用system用户给你自己的账号分配上述分区的使用权限。你需要使用system用户给你的用户分配可以查询执行计划的权限。 表创建成功后,插入数据,数据能并平均分布到各个分区。每个表的数据都应该大于1万行,对表进行联合查询。 写出插入数据的语句和查询数据的语句,并分析语句的执行计划。 进行分区与不分区的对比实验。 在用户名shuijingyelong_1下建立orders表和order_details表并分区。 在用户名shuijingyelong_1下建立orders_nospace表和order_details_space表不分区。 分区表建立sql 分区策略: orders表按范围分区,通过订单日期进行分区。 orders与order_details表主外键关联,所以在order_details表使用引用分区进行存储。 #建立ORDERS表并分区 CREATE TABLE ORDERS ( ORDER_ID NUMBER ( 10 , 0 ) NOT

使用MbrFix.exe修复MBR分区表

大兔子大兔子 提交于 2019-12-31 20:45:54
在卸载linux Ubuntu之前,先修复MBR,然后再删除Linux分区就可以了。而MbrFix.exe 就是这样一个Windows 修复MBR的应用程序软件,MbrFix.exe 不仅支持Windows XP,还支持32位或64位的Windows NT, Windows 2000,Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7 和 Windows PE系统。使用MbrFix.exe卸载Linux Ubuntu的步骤如下: 1. 下载MbrFix.exe 首先进入Windows 操作系统,进入绿盟网站 下载MbrFix.exe ,从上往下数第四个软件即是; 下载完成后解压zip压缩包,将MbrFix.exe 剪切到C盘(系统盘); Windows7要使用以管理员身份运行CMD 然后在使用如下命令: MbrFix /drive 0 fixmbr /yes –>Enter回车; 这样MBR修复就完成了。接下来直接删除linux分区就可以了。 2. 格式化删除 Linux分区 以Windows XP系统为例:我的电脑点击右键–>管理–>磁盘管理–>看到几个没有盘符名称的分区(看准哦,不要将Windows 分区给误删了。)–>右键–>删除逻辑分区。 重启电脑,Grub 已经不复存在,双系统Linux

PC启动过程详解

大憨熊 提交于 2019-12-27 21:21:50
系统启动过程 1. 预引导(Pre-Boot)阶段 2. 引导阶段 3. 加载内核阶段 4. 初始化内核阶段 5. 用户登录阶段 基本概念: BIOS:即“Basic Input/Output System”(基本输入输出系统),它是一组被“固化”在计算机主板上的一块ROM中直接关联硬件的程序,保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序,其主要功能是为计算机提供最底层的、最直接的硬件设置和控制,它包括系统BIOS(主板BIOS).其它设备BIOS(例如IDE控制器BIOS、显卡BIOS等)其中系统BIOS占据了主导地位.计算机启动过程中各个BIOS的启动都是在它的控制下进行的.   内存地址:内存空间的最基本单位是bit,8bit视为一个字节,即我们常用的单位B,内存中的每一个字节都占有一个地址(地址是为了让CPU识别这些空间,是按照16进制表示的),而最早的8086处理器只能识别1MB(2的20次方B)的空间,这1MB内存中低端(即最后面)的640KB就被称为基本内存,而剩下的内存(所有的)则是扩展内存。这640KB的空间分别由显存和各BIOS所得。(主存储器空间 RAM 0000-9ffff 显存地址空间 A0000-bffff 各类ROM地址空间 c0000-fffff) 一 预引导阶段   第一步: 当我们按下电源开关时