数据库分区

SqlServer2005 海量数据 数据表分区解决难题

喜夏-厌秋 提交于 2020-03-02 12:38:21
今天遇到难题公司做股票交易系统数据量比较大光备份文件从03-09年就有500G 虽然现在硬盘换到1500GB 但要解决怎样将这些年的数据都附加到一个数据库当中很是头痛 在网上泡了一天终于找到比较理想的方案,希望有所帮助 超大型数据库的大小常常达到数百 GB ,有时甚至要用 TB 来计算。而单表的数据量往往会达到上亿的记录,并且记录数会随着时间而增长。这不但影响着数据库的运行效率,也增大数据库的维护难度。除了表的数据量外,对表不同的访问模式也可能会影响性能和可用性。这些问题都可以通过对大表进行合理分区得到很大的改善。当表和索引变得非常大时,分区可以将数据分为更小、更容易管理的部分来提高系统的运行效率。如果系统有多个 CPU 或是多个磁盘子系统,可以通过并行操作获得更好的性能。所以对大表进行分区是处理海量数据的一种十分高效的方法。本文通过一个具体实例,介绍如何创建和修改分区表,以及如何查看分区表。 1 SQL Server 2005 SQL Server 2005 是微软在推出 SQL Server 2000 后时隔五年推出的一个数据库平台,它的数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使用户可以构建和管理用于业务的高可用和高性能的数据应用程序。此外 SQL Server 2005 结合了分析、报表、集成和通知功能。这使企业可以构建和部署经济有效的 BI 解决方案

sql server 分区表的一些操作

冷暖自知 提交于 2020-03-02 11:39:07
use fenqutest -------------------- -- 准备分区用的文件组、文件、分区函数、分区方案 --添加文件分组 ALTER DATABASE fenqutest ADD FILEGROUP [test2010] ALTER DATABASE fenqutest ADD FILEGROUP [test2011] ALTER DATABASE fenqutest ADD FILEGROUP [test2012] ALTER DATABASE fenqutest ADD FILEGROUP [test2013] --ALTER DATABASE fenqutest ADD FILEGROUP [test] --添加物理文件 ALTER DATABASE fenqutest ADD FILE (NAME = N'test2010',FILENAME = N'D:\sqlserver test\test2010.ndf',SIZE = 1MB,MAXSIZE = 10MB,FILEGROWTH = 1MB) TO FILEGROUP [test2010] -- ALTER DATABASE fenqutest ADD FILE (NAME = N'test2011',FILENAME = N'D:\sqlserver test\test2011.ndf',SIZE

oracle 的索引

被刻印的时光 ゝ 提交于 2020-03-02 07:52:29
一、索引分类 按逻辑分: 单列索引(Single column): 单列索引是基于单列所创建的索引 复合(多列)索引(Concatenated ): 复合索引是基于两列或者多列所创建的索引 唯一索引(Unique ): 唯一索引是索引列值不能重复的索引。 非唯一索引(NonUnique ): 非唯一索引是索引列可以重复的索引。 函数索引(Function-based): Oracle中不仅能够直接对表中的列创建索引,还可以对包含列的函数或表达式创 建索引,这种索引称为“位图索引”。 域索引(Domain): 域索引实际为用户自定义索引,域索引主要对存储在数据库中的媒体,图像数据进行索引,这些数据在oracle中基本上 以BLOB类型存储,不同的应用存储格式也不同, oracle不可能提供某一种现成的算法对这些数据进行索引,为了能够对 这些类型数据快速访问,oracle提供了现成的接口函数,用户可以针对自己的数据格式实现这些接口函数,以达到对这些 数据的快速访问。 按物理分: 分区索引(Partitioned): 表分区后其上建立的索引与普通表建立的索引不同,其索引是分区索引。 分区表上的索引分为 2 类,即 局部索引 和 全局索引 局部索引local index 局部索引一定是分区索引 ,分区键等同于表的分区键,分区数等同于表的分区数,一句话,局部索引的分区机制和表的分区机制一样。

Hive基本操作

99封情书 提交于 2020-03-01 21:16:44
一、概述 Hive是建立在HDFS之上的数据仓库,所以Hive的数据全部存储在HDFS上。 Hive的数据分为两部分,一部分是存在HDFS上的具体数据,一部分是描述这些具体数据的元数据信息, 一般Hive的元数据存在MySQL上 。 Hive是类SQL语法的数据查询、计算、分析工具,执行引擎默认的是MapReduce,可以设置为Spark、Tez。 Hive分内部表和外部表,外部表在建表的同时指定一个指向实际数据的路径(LOCATION),Hive 创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。在删除表的时候,内部表的元数据和数 据会被一起删除,而外部表只删除元数据,不删除数据。 二、基本操作 hive命令行:$HIVE_HOME/bin./hive 2.1创建数据库 hive> create database IF NOT EXISTS test COMMENT ‘数据库注释’ LOCATION ‘/hivedata’ WITH DBPROPERTIES (‘creater’=‘k’,‘date’=‘20190229’); IF NOT EXISTS:如果不存在则创建 COMMENT:添加注释 LOCATION:指定hdfs存放路径 WITH DBPROPERTIES:添加自定义属性 2.2查询、删除数据库 hive

mysql —— 分表分区

拜拜、爱过 提交于 2020-02-29 11:24:31
面对当今大数据存储,设想当mysql中一个表的总记录超过1000W,会出现性能的大幅度下降吗? 答案是肯定的,一个表的总记录超过1000W,在操作系统层面检索也是效率非常低的 解决方案: 目前针对海量数据的优化有两种方法: 1、大表拆小表的方式(主要有分表和分区两者技术) (1)分表技术 垂直分割 优势:降低高并发情况下,对于表的锁定。 不足:对于单表来说,随着数据库的记录增多,读写压力将进一步增大。 水平分割 如果单表的IO压力大,可以考虑用水平分割,其原理就是通过hash算法,将一张表分为N多页,并通过一个新的表(总表),记录着每个页的的位置。假如一 个门户网站,它的数据库表已经达到了1000万条记录,那么此时如果通过select去查询,必定会效率低下(不做索引的前提下)。为了降低单表的读写 IO压力,通过水平分割,将这个表分成10个页,同时生成一个总表,记录各个页的信息,那么假如我查询一条id=100的记录,它不再需要全表扫描,而是 通过总表找到该记录在哪个对应的页上,然后再去相应的页做检索,这样就降低了IO压力。 水平分表技术就是将一个表拆成多个表,比较常见的方式就是将表中的记录按照某种HASH算法进行拆分,同时,这种分区方法也必须对前端的应用程序中的 SQL进行修改方能使用,而且对于一个SQL语句,可能会修改两个表,那么你必须要修改两个SQL语句来完成你这个逻辑的事务

Greenplum 数据库调优

怎甘沉沦 提交于 2020-02-29 01:39:55
Greenplum 数据库调优 目录 Greenplum 数据库调优 1 目录 1 1 Greenplum查询处理回顾 2 1.1 Master 把查询语句分发到segment 2 2 Greenplum数据库调优 3 2.1 系统资源 3 2.2 硬件问题 4 2.3 资源管理 5 2.3.1 查看resource queue的参数 5 2.3.2 设置临时的内存大小 6 2.3.3 当发生数据溢出时添加内存的大小 6 2.3.4 受影响的系统的参数 7 2.3.5 查看一些有用的视图 7 2.4 统计信息不准确 8 2.4.1 创建两张表 8 2.4.2 使用EXPLAIN查看执行计划 8 2.4.3 使用ANALYZE执行统计信息 9 2.4.4 以下情况都需要执行ANALYZE 10 2.5 数据倾斜 10 2.5.1 数据倾斜实例 10 2.5.2 使用视图查看表的倾斜 11 2.5.3 改变数据倾斜问题 11 2.6 计算倾斜 12 2.6.1 关联条件倾斜 12 2.6.2 多计算聚集 12 2.6.3 减少计算倾斜问题 13 2.7 数据广播 13 2.7.1 查看表是不是出现了Broadcast 13 2.7.2 改变planner之后运行 14 2.7.3 修改GUC来设定优化器 14 2.8 多阶段聚集 15 2.8.1 多阶段聚集关闭的情况 15 2.8.2

MetaQ 入门(Metamorphosis)

泄露秘密 提交于 2020-02-28 23:40:07
一、 简介 设计很独特,它采用pull机制,而不是一般MQ的push模型 ; 大量利用了zookeeper做服务发现和offset存储 ;它来源于kafka(scala),但是有自己的特点: 事务、多种offset存储、高可用方案(HA)等。 MetaQ相对kafka特有功能: 文本协议设计,非常透明,支持类似memcached stats的协议来监控broker 纯Java实现,从通讯到存储,从client到server都是重新实现。 提供事务支持,包括本地事务和XA分布式事务 支持HA复制,包括异步复制和同步复制,保证消息的可靠性 支持异步发送消息 消费消息失败,支持本地恢复 多种offset存储支持,数据库、磁盘、zookeeper,可自定义实现 支持group commit,提升数据可靠性和吞吐量。 支持消息广播模式 一系列配套项目:python客户端、twitter storm的spout、tail4j等。 Meta适合的应用: 日志传输,高吞吐量的日志传输本来就是kafka的强项 消息广播功能,如广播缓存配置失效。 数据的顺序同步功能,如mysql binlog复制 分布式环境下(broker,producer,consumer都为集群)的消息路由,对顺序和可靠性有极高要求的场景。 作为一般MQ来使用的其他功能 二、术语 Message Producer :生产者;

Hive 学习(三) Hive的DDL操作

早过忘川 提交于 2020-02-28 21:15:35
一,库操作    1.1 语句结构    1.2 创建库 二,表操作    2.1 语法结构    2.2 基本建表语句    2.3 删除表    2.4 内部表和外部表    2.5 分区表    2.6 CTAS建表语法 三,数据导入和导出    3.1 将文件导入hive的表    3.2 将hive表中的数据导出到指定的路径文件    3.3 hive的文件格式 四,修改表定义 正文 一,库操作    1.1 语句结构 CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name   [COMMENT database_comment]      //关于数据块的描述   [LOCATION hdfs_path]          //指定数据库在HDFS上的存储位置   [WITH DBPROPERTIES (property_name=property_value, ...)];    //指定数据块属性   默认地址:/user/hive/warehouse/db_name.db/table_name/partition_name/…    1.2 创建数据库 create database db_order; 库建好后,在hdfs中会生成一个库目录: hdfs://hdp20-01:9000/user/hive

Linux 挂载管理(mount)

痴心易碎 提交于 2020-02-27 08:34:58
标签:mount,umount 概述 在上一章增加linux操作系统空间中已经使用过了mount命令对分区进行挂载,这一章详细介绍挂载管理,该命令涉及的知识点也挺多的而且也还比较重要,是需要掌握的一个命令。 挂载分区 mount基本语法 mount [参数] /dev/sdb1(需要挂载的分区) /sdb1(挂载目录) 参数是可选的,也可以不带参数,参数的使用方法(-o ro,sync,atime)。 参数: -t:指定文件系统类型 mount -t ext4 /dev/sdb1 /sdb1 -o:指定挂载选项 ro,rw:只读或者读写的方式挂载,默认是rw. sync:不适用缓存,所有操作直接读写磁盘。 async:适用缓存,默认方式。 noatime:每次访问文件时不更新文件的访问时间。 atime:每次访问文件时更新文件的访问时间,默认方式。 user:任何用户都可以挂载 nouser:只有超级用户才可以挂载 auto:系统开机自动挂载 noauto:系统开机不自动挂载 remount:重新挂载文件系统。 查看当前已挂载的分区 mount 通过mount不带参数命令可以查看当前系统的所有挂载分区情况,包括分区的挂载点、分区类型、参数等。 查看挂载分区下的文件 ls /sdb1 每个挂载分区下面都会有一个Lost+found文件夹,该文件夹用来存放文件的损坏数据

Windows 7/8/8.1 硬盘安装法实现 ubuntu 14.04 双系统

白昼怎懂夜的黑 提交于 2020-02-26 13:30:18
一、软件准备 1、 下载 Ubuntu 系统镜像: http://www.ubuntu.com/download/desktop/ ;   这里使用的是 ubuntu 14.04.1 LTS 64bit 版本。LTS表示 Long Term Support ,长期支持。 2、 下载并安装DiskGenius : http://www.diskgenius.cn/download.php ;   使用 DiskGenius 来进行磁盘操作。 3、 下载并安装 EasyBCD : http://neosmart.net/EasyBCD/ ;   这里使用 EasyBCD 来进行引导的处理。BTW,EasyBCD作为个人使用不须付费,但进行商业使用行为时请付费购买正版。 二、操作准备 1、 在 DiskGenius 中,选择一个磁盘分区处理 Ubuntu 的安装分区,对着目标分区右键,选择"删除当前分区",弹出来的窗口中点击"是(Y)",接着在左上角点击"保存更改"按钮,并在确认窗口中选择"是(Y)"。保持目标分区的未定义状态。 注意:   Linux 目标盘最好是在硬盘的后面,因为 Windows 系统中无法识别 Linux 的 Ext4 分区,举个例子,如果将 Linux 装在C盘和E盘之间的D盘,即将D盘删除后建立 Linux 分区,后面的E盘盘符就会被系统替换成D