分区表

PostgreSQL 修改字段类型从int到bigint

不羁的心 提交于 2019-11-27 05:05:44
由于现在pg的版本,修改int到bigint仍然需要rewrite表,会导致表阻塞,无法使用。但可以考虑其他方式来做。 此问题是排查现网pg使用序列的情况时遇到的。 由于int的最大值只有21亿左右,而且自增列多为主键,当达到最大值时,数据就会无法插入。一般情况是修改类型为bigint,但直接做会锁表,影响现网使用。 这里分两块来看: 1、分区表(修改序列): 对于分区表可以直接修改序列为循环形式,而且最大值设置为int的最大值,因为单个分区表很少会将int值用完。 alter sequence seq_name MAXVALUE 2147483647 CYCLE; 注意这里适用于按日或按月分区的表,对于hash分区表,只能修改字段类型。 2、非分区表(修改为bigint) 由于创建表时,可能使用的是serial,所以此时就需要新建一个序列,不然字段id在删除时,之前的序列也会跟着一同被删除。 下面的步骤中要注意,添加主键约束部分,如果new_id上没有not null约束,则此时会进行全表扫描检查有无not null的记录。虽然pg检查记录是否为not null的操作比较快,但这一步还是会锁较长时间(看记录数多少而定)。 alter table table_name add column new_id bigint ; -- -循环更新new_id do language

Parted 创建 GPT 分区

梦想与她 提交于 2019-11-27 03:57:56
对于磁盘的分区表 MBR与GPT区别。 MBR:MBR分区表(即主引导记录)大家都很熟悉,是过去我们使用windows时常用的。 所支持的最大卷:2T,而且对分区有限制:最多4个主分区或3个主分区加一个扩展分区 GPT: GPT(即GUID分区表)。是源自EFI标准的一种较新的磁盘分区表结构的标准,是未来磁盘分区的主要形式。与MBR分区方式相比,具有如下优点。 突破MBR 4个主分区限制,每个磁盘最多支持128个分区。支持大于2T的分区,最大卷可达18EB。 对于 GPT 的分区,建议使用 parted 工具进行分区,fdisk 在 GPT 这块不是很好。 Parted 介绍 Parted 命令分为两种模式:命令行模式和交互模式。 命令行模式 parted [option] device [command] ,该模式可以直接在命令行下对磁盘进行分区操作,比较适合编程应用。如: 显示磁盘/dev/sdb分区。 parted /dev/sdb print 交互模式 parted [option] device 进入交互模式。尤其是对 parted 命令不是很熟悉的情况下建议使用交互模式。 parted /dev/sdb parted命令常用选项 进入 交互模式下, 输入 help 可以看到如下提示,本文基于 Parted 3.2 进行说明。 test@test01:~$ sudo

Spark读取Hive分区表出现Input path does not exist的问题!!!

半城伤御伤魂 提交于 2019-11-27 02:23:23
问题详情 Hive读取正常,不会报错,Spark读取数据就会出现报错信息: org.apache.hadoop.mapred.InvalidInputException: Input path does not exist: hdfs://testcluster/user/hive/warehouse/.... 然后我们去查看一下 表数据的具体在hdfs上的存储路径,去hdfs上查看,发现文件确实不存在! 问题解决 我是在清理历史数据的时候 手动删除数据了 但是没有删除数据分区信息。导致spark找不到。 在hive中执行 show partitions test ,查看test表对应的所有分区。 Spark加载hive分区表数据会根据show partitions中的分区去加载,发现目录缺失就会出错了。 只需要删除分区就可以了 alter table TableName drop partition (p=‘xxx’) 来源: https://blog.csdn.net/qq_42684504/article/details/99288047

SQL的基本操作(三)

大兔子大兔子 提交于 2019-11-27 01:22:01
Hive基本SQL操作 Hive DDL(数据库定义语言) 1、数据库的基本操作 --展示所有数据库 show databases; --切换数据库 use database_name; /*创建数据库 CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES (property_name=property_value, ...)]; */ create database test; /* 删除数据库 DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE]; */ drop database database_name; 注意:当进入hive的命令行开始编写SQL语句的时候,如果没有任何相关的数据库操作,那么默认情况下,所有的表存在于default数据库,在hdfs上的展示形式是将此数据库的表保存在hive的默认路径下,如果创建了数据库,那么会在hive的默认路径下生成一个database_name.db的文件夹,此数据库的所有表会保存在database_name.db的目录下。 2、数据库表的基本操作 /*

Mysql分区表

…衆ロ難τιáo~ 提交于 2019-11-27 01:12:34
mysql> create table stu(Id int(9) not null auto_increment, Name varchar(100) not null default '',Time datetime default null,primary key (Id,Time)) partition by range(to_days(Time))(partition p0 values less than (to_days('2015-03-21')),partition p1 values less than (to_days('2015-03-22'))); Query OK, 0 rows affected mysql> show create table stu; +-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Hive笔记4

坚强是说给别人听的谎言 提交于 2019-11-26 23:14:56
DDL数据定义 创建数据库 1)创建一个数据库,数据库在HDFS上的默认存储路径是/user/hive/warehouse/*.db。 2)避免要创建的数据库已经存在错误,增加if not exists判断。(标准写法) create database if not exists db_hive; 3)创建一个数据库,指定数据库在HDFS上存放的位置 create database db_hive2 location '/db_hive2.db'; 4.2查询数据库 4.2.1 显示数据库 - 1.显示数据库 show databases -2. 显示数据库详细信息,extended create database extended db_hive; 4.3.3 切换当前数据库use use db_hive; 修改数据库 用户可以使用ALTER DATABASE命令为某个数据库的DBPROPERTIES 设置键-值对属性值,来描述这个数据库的属性信息。数据库的其他数据信息都是不可更改的,包括数据库名和数据库所在的目录位置 alter database db_hive set dbproperties('createtime' = '20170830'); 在Hive中查询修改结果 desc database extended db_hive; 删除数据库 1.删除数据库 drop

oracle的表分区

℡╲_俬逩灬. 提交于 2019-11-26 21:20:27
(1.) 表空间及分区表的概念 表空间:   是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间。 分区表: 当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区。表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间(物理文件上),这样查询数据时,不至于每次都扫描整张表。 ( 2).表分区的具体作用 Oracle的表分区功能通过改善可管理性、性能和可用性,从而为各式应用程序带来了极大的好处。通常,分区可以使某些查询以及维护操作的性能大大提高。此外,分区还可以极大简化常见的管理任务,分区是构建千兆字节数据系统或超高可用性系统的关键工具。 分区功能能够将表、索引或索引组织表进一步细分为段,这些数据库对象的段叫做分区。每个分区有自己的名称,还可以选择自己的存储特性。从数据库管理员的角度来看,一个分区后的对象具有多个段,这些段既可进行集体管理,也可单独管理,这就使数据库管理员在管理分区后的对象时有相当大的灵活性。但是,从应用程序的角度来看,分区后的表与非分区表完全相同,使用 SQL DML 命令访问分区后的表时,无需任何修改。 什么时候使用分区表: 1、表的大小超过2GB。 2、表中包含历史数据,新的数据被增加都新的分区中。 (3).表分区的优缺点 表分区有以下优点

数据库分区表常用命令

旧巷老猫 提交于 2019-11-26 17:35:46
一、Oracle分区简介 ORACLE的分区是一种处理超大型表、索引等的技术。分区是一种“分而治之”的技术,通过将大表和索引分成可以管理的小块,从而避免了对每个表作为一个大的、单独的对象进行管理,为大量数据提供了可伸缩的性能。分区通过将操作分配给更小的存储单元,减少了需要进行管理操作的时间,并通过增强的并行处理提高了性能,通过屏蔽故障数据的分区,还增加了可用性。 二、Oracle分区优缺点 ? 优点: 增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用; 维护方便:如果表的某个分区出现故障,需要修复数据,只修复该分区即可; 均衡I/O:可以把不同的分区映射到磁盘以平衡I/O,改善整个系统性能; 改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度。 ? 缺点: 分区表相关:已经存在的表没有方法可以直接转化为分区表。不过 Oracle 提供了在线重定义表的功能。 三、Oracle分区方法 ? 范围分区: 范围分区就是对数据表中的某个值的范围进行分区,根据某个值的范围,决定将该数据存储在哪个分区上。如根据序号分区,根据业务记录的创建日期进行分区等。 ? Hash分区(散列分区): 散列分区为通过指定分区编号来均匀分布数据的一种分区类型,因为通过在I/O设备上进行散列分区,使得这些分区大小一致。 ? List分区(列表分区):

【原】Sql Server性能优化——Partition(创建分区)

戏子无情 提交于 2019-11-26 15:52:07
和压缩(Compression)相比,数据库分区(Partition)的操作更为复杂繁琐。而且与Compression一次操作,终身保持不同,分区是一项需要长期维护周期变更的操作。 分区的意义在于将大数据从物理上切割为几个相互独立的小部分,从而在查询时只取出其中一个或几个分区,减少影响的数据;另外对于置于不同文件组的分区,并行查询的性能也要高于对整个表的查询性能。 事实上,在SQL Server 2005中就已经包含了分区功能,甚至在2005之前,还存在一个叫做“Partitioned Views”的功能,能通过将同样结构的表Union在一个View中,实现类似现在分区表的效果。而在SQL Server 2008中,分区功能得到了显著加强,使得我们不仅能够对表和索引做分区, 而且允许对分区上锁,而不是之前的全表上锁 。 指定分区列 和Compression一样,在SQL Server 2008中也提供了分区的向导界面。在企业管理器中,需要分区的表上右键选择Storage-》Create Partition: 这里会列出该表所有的字段,包括字段类型、长度、精度及小数位数的信息,可以选择其中的任意一一列作为分区列(Patitioning Column),不仅仅是数字或者日期类型,即使是字符串类型的列,也可以按照字母顺序进行分区。而以下类型的列不可用于分区: text、ntext

MBR分区表的备份与还原

天大地大妈咪最大 提交于 2019-11-26 13:22:27
MBR分区表的备份与还原 MBR分区的存储 从下图可以看出,MBR分区前446字节是boot loader;接下来64字节是分区表;再然后就是三个主分区加一个拓展分区。 一、备份分区表,要跳过前446字节 # 使用dd备份sda的分区表,跳过前446字节 [root@localhost ~]# dd if=/dev/sda of=./partition bs=1 count=64 skip=446 64+0 records in 64+0 records out 64 bytes (64 B) copied, 0.000353636 s, 181 kB/s # 使用16进制查看备份的内容 [root@localhost ~]# hexdump -C partition 00000000 80 20 21 00 83 aa 28 82 00 08 00 00 00 00 20 00 |. !...(....... .| 00000010 00 aa 29 82 8e fe ff ff 00 08 20 00 00 f8 df 18 |..)....... .....| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000040 # 查看硬盘的前512字节,和上面对比下