数据库分区

数据库分表分区

你说的曾经没有我的故事 提交于 2019-11-28 05:51:21
概念 分表:分表就是将一张表分成N张小表, 分区:就是将一张表的数据分成N个区块,这些区块可以放在一个磁盘上.一张表主要对应三个文件: frm:存放表结构 myd:存放表数据 myi:存放索引的 如果一张表数据量太大了的话,那么myd 和 myi 就会变的很大,那么我们在查询数据的时候就会很慢,所以这个时候我们就可对其进行表,在物理上将这一张表对应的三个文件,分割成多个小块,这时在查询某一条数据的时候,不用查找全部的数据,只用找到这条数据在哪儿一块儿,然后找到对应的那一块儿就行了.如果一张表的数据太大,可能一个磁盘放不下,这个时候,我们就可以把数据分配到不同的磁盘里面去了. 如何分表 分表的方式有两种: 水平分割(横向分割) 就是横着来分区,比如有100w条数据,分成10份,每一份存放在一个区,而每一区中都包含分区之前表中的所有字段. 垂直分割(纵向分割) 就是竖着来分区了.出现这种情况的原因很多时候是因位数据表在前期设计的时候每有考虑好,导致了这张表中的字段太多了.有些字段可以不经常用也放在一张表中,所有我们可以将这些字段分开来. 数据方面 分表后,数据都存放在分表中,以前的表就是一空壳,村塾数据发生在一个一个分表中, 分区后,没有分表的概念,分区只是包存放数据的文件分成了许多小块,分区之后的表还是一张表. 意义–提高性能 分表:单表并发能力提高了,因为查询一次的所用时间缩短了

SqlServer分区表概述(转载)

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

oracle表空间表分区详解(转)

老子叫甜甜 提交于 2019-11-28 05:05:05
oracle表空间表分区详解(转) 此文从以下几个方面来整理关于分区表的概念及操作: 1.表空间及分区表的概念 2.表分区的具体作用 3.表分区的优缺点 4.表分区的几种类型及操作方法 5.对表分区的维护性操作. 表空间及分区表的概念 表空间:是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间。 分区表:当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区。表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间(物理文件上),这样查询数据时,不至于每次都扫描整张表。 表分区的具体作用 Oracle的表分区功能通过改善可管理性、性能和可用性,从而为各式应用程序带来了极大的好处。通常,分区可以使某些查询以及维护操作的性能大大提高。此外,分区还可以极大简化常见的管理任务,分区是构建千兆字节数据系统或超高可用性系统的关键工具。 分区功能能够将表、索引或索引组织表进一步细分为段,这些数据库对象的段叫做分区。每个分区有自己的名称,还可以选择自己的存储特性。从数据库管理员的角度来看,一个分区后的对象具有多个段,这些段既可进行集体管理,也可单独管理,这就使数据库管理员在管理分区后的对象时有相当大的灵活性。但是,从应用程序的角度来看,分区后的表与非分区表完全相同,使用 SQL

centos7上对LVM根分区扩容vg无法添加pv故障解决

时光总嘲笑我的痴心妄想 提交于 2019-11-28 05:04:53
一次,我们的备份数据库的虚拟机出现了异常,备份程序异常终止。经过检查是根分区满了。如下所示: 因为根分区默认是采用LVM,所以我就想着直接添加一块硬盘,然后添加到LVM里面,直接对根分区扩容。 根分区扩容方式参考之前的写的博客 https://blog.51cto.com/11555417/2336797 但是在执行到vgextend命令时,一直提示错误,无法对vg进行扩充 Couldn't create temporary archive name. 后来查询到问题所在 原来是根分区满了,无法创建归档名称,至少需要1M的剩余空间才能操作。所以必须先删除一些临时文件. 首先使用如下命令,查找根分区中大于1G的文件。 目录中/backup 和var下占用很多空间。然后依次到/bakup目录中查找存在的大文件。然后发现在backup目录中有很多数据库备份文件, 原来磁盘空间都是被这些数据库备份文件给占满了 这些备份文件都是要保留的,不能全部删除。在删除了最早的一批备份后,释放了6G空间出来。 此时在用vgextend命令成功。 根分区成功扩容 思考: 1、LVM的确扩容方便 2、编写脚本,删除超过指定时间的备份文件,腾出空间 来源: https://blog.51cto.com/11555417/2431580

分布式理论(一)CAP 理论

筅森魡賤 提交于 2019-11-28 04:15:31
分布式理论(一) CAP 理论 一. CAP 理论前言 CAP 原则又称为 CAP 理论,主要思想是在任何一个分布式系统中都无法同时满足 CAP 。 C ( Consistency ):表示一致性,所有的节点同一时间看到的是相同的数据。 A ( Avaliablity ):表示可用性,不管是否成功,确保一个请求都能接收到响应。 P ( Partion Tolerance ):分区容错性,系统任意分区后,在网络故障时,仍能操作。 如上所述,正如 Gilbert 认为, 一致性 其实就是关系型数据库所讲的 ACID ,一个用户请求要么是成功,要么是失败的,不能有处于一个中间状态;一旦一个事务完成,将来所有事务都必须基于这个完成后的状态;未完成的事务不会互相影响;一旦一个事务完成,就是持戒的。 可用性 其实就是对于一个系统而言,所有的请求都应该 “成功”并且收到“响应”。 分区容错性 其实就是指分布式系统的容错性,一个节点出现了故障,不影响整个集群的正常使用。 二. CAP 理论介绍 如图,在一个网络中, N1 和 N2 即分布式系统中的两个节点,他们都共享数据块 V ,其中有一个值是为 V0 。 l 在满足一致性的时候, A 中的 V0 应该和 B 中的 V0 保持一致的,即 V0=V0 l 在满足可用性的时候,无论请求访问 A 或者是 B 都应该得到响应。 l 在满足分区可用性的时候

【sparkSQL】SparkSession的认识

不想你离开。 提交于 2019-11-28 01:56:23
https://www.cnblogs.com/zzhangyuhang/p/9039695.html https://www.jianshu.com/p/dea6a78b9dff 在Spark1.6中我们使用的叫Hive on spark,主要是依赖hive生成spark程序,有两个核心组件SQLcontext和HiveContext。 这是Spark 1.x 版本的语法 1 2 3 4 5 //set up the spark configuration and create contexts val sparkConf = new SparkConf().setAppName( "SparkSessionZipsExample" ).setMaster( "local" ) // your handle to SparkContext to access other context like SQLContext val sc = new SparkContext(sparkConf).set( "spark.some.config.option" , "some-value" ) val sqlContext = new org.apache.spark.sql.SQLContext(sc) 而Spark2.0中我们使用的就是sparkSQL,是后继的全新产品

HBase

你离开我真会死。 提交于 2019-11-27 22:30:18
为什么要有HBase? Hadoop生态圈中有了Hive,Hive可以像关系型数据库那样操作数据,那么为什么还要有HBase? 首先HBase是一个非关系型数据库,是用于存储数据的,Hive是用于处理数据的。 Hive操作数据时虽然可以像关系型数据库那样操作,但Hive只是一个操作工具,而非一个针对大批量数据存储的解决方案。 我们先来看看HBase是什么,在去做做比较,这样大家就清晰多了。 什么是HBase? HBase是谷歌的BigTable论文的开源实现,也有很多不同,BigTable使用GFS作为文件存储系统,HBase是使用HDFS作为存储系统(可配置),依然是熟知的Apache下的产品。 HBase是一个高可靠、高性能、面向列的可伸缩分布式非关系型分布式存储系统,志在在廉价的PC上搭建起一个存储结构化和非结构化数据并处理大批量数据服务器集群,说白了就是把配置低的PC组成集群来处理成万上亿的数据。 HBase可以分为两种角色,一种是存储系统,一种是作为数据处理模型的MapReduce框架。 HBase与HDFS HBase HDFS 分布式存储提供文件系统 提供表状(逻辑化)的面向列的数据存储 针对存储大尺寸文件进行优化,不需要针对HDFS上的文件进行随机读写 针对表状的数据随机读取进行优化 直接使用文件 Key-Value操作数据 数据模型不灵活 灵活的数据模型

hive知识点总结

时间秒杀一切 提交于 2019-11-27 20:38:52
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 Metastore (hive元数据) Hive将元数据存储在数据库中,比如mysql ,derby.Hive中的元数据包括表的名称,表的列和分区及其属性,表的数据所在的目录 Hive数据存储在HDFS,大部分的查询、计算由mapreduce完成 Hive数据仓库于数据库的异同 (1)由于Hive采用了SQL的查询语言HQL,因此很容易将Hive理解为数据库。其实从结构上来看,Hive和数据库除了拥有类似的查询语言, 再无类似之处。 (2)数据存储位置。 hdfs raw local fs (3)数据格式。 分隔符 (4)数据更新。hive读多写少。Hive中不支持对数据的改写和添加,所有的数据都是在加载的时候中确定好的。 INSERT INTO … VALUES添加数据,使用UPDATE … SET修改数据 不支持的 HDFS 一次写入多次读取 (5) 执行。hive通过MapReduce来实现的 而数据库通常有自己的执行引擎。 (6)执行延迟。由于没有索引,需要扫描整个表,因此延迟较高。另外一个导致Hive执行延迟高的因素是MapReduce框架 (7)可扩展性 (8)数据规模。 hive几种基本表类型

Hive SQL之分区表与分桶表

牧云@^-^@ 提交于 2019-11-27 18:15:46
  Hive sql是Hive 用户使用Hive的主要工具。Hive SQL是类似于ANSI SQL标准的SQL语言,但是两者有不完全相同。Hive SQL和Mysql的SQL方言最为接近,但是两者之间也存在着显著的差异,比如Hive不支持行级数据的插入、更新和删除,也不支持事务操作。    注: HIVE 2.*版本之后开始支持事务功能,以及对单条数据的插入更新等操作 Hive的相关概念 Hive数据库       Hive中的数据库从本质上来说仅仅就是一个目录或者命名空间,但是对于具有很多用户和组的集群来说,这个概念非常有用。首先,这样可以避免表命名冲突;其次,它等同于与关系型数据库中数据库的概念,是一组表或者表的逻辑组,非常容易理解 Hive表      Hive中的表和关系型数据库中table概念是类似的,每个table在Hive中都有一个相应的目录存储数据。如果说,你没有指定表的数据库,那么Hive会通过{HIVE_HOME}/conf/hive_site.xml配置文件中的hive.metastore.warehouse.dir属性来使用默认值(一般是/usr/hive/warehouse,也可以根据实际情况来进行修改该配置),所有的table都保存在这个目录中。     Hive中的表分为两类,分别为 内部表 和 外部表 内部表(managed table)     

MySQL相关

梦想与她 提交于 2019-11-27 15:58:40
一、SELECT语句的执行顺序 from->on->join->where->group by->聚集函数->having->计算表达式->select->distinct->order by->top 二、存储过程 存储过程是一个可编程的函数,它在数据库中创建并保存。优点有: 1、存储过程能实现较快的执行速度 2、存储过程允许标准组件式编程。 3、存储过程可以用流程控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。 4、存储过程可被作为一种安全机制来充分利用。 5、存储过程能够减少网络流量 存储过程和函数的异同点 相同点:存储过程和函数都是为了可重复的执行操作数据库的sql 语句的集合。 不同点: 1、标识符不同,函数的标识符是function,存储过程是proceduce。 2、函数中有返回值,且必须有返回值,而过程没有返回值,但是可以通过设置参数类型(in,out)来实现多个参数或者返回值。 3、函数使用select 调用,存储过程需要使用call 调用。 三、事务的特性 1、原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行。 2、一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致。 3、隔离性(Isolation):事务的执行不受其他事务的干扰