数据库分区

虚拟机配置与系统安装

你。 提交于 2020-03-14 10:41:25
虚拟机配置与系统安装 虚拟机 虚拟机的两个实用功能:快照(建立一个状态,之后在任意一个时间可以恢复这个状态)和克隆(创建一个完全相同的机器,以测试多个计算机的情况) linux系统的安装过程步骤 linux系统的安装过程有以下几步:硬盘分区、逻辑格式化、生成设备文件名、完成挂载。 磁盘分区 硬盘分区有一定的规则,这是硬盘的硬件组成结构决定的,分区就是以磁柱为单位的连续磁盘空间。硬盘主分区最多只能有4个,扩展分区最多只能有1个,主分区+扩展分区的总数不能超过4个,扩展分区不能格式化不能写入数据,唯一的作用就是包含逻辑分区,逻辑分区可以正常写入数据和格式化(C盘就是主分区,其他都是逻辑分区)。 分区表示有一个特殊的规则,逻辑分区永远都是从5开始的,如下图第一种分区,1、2、3为主分区,4是扩展分区,5、6是逻辑分区。第二种分区只有一个主分区1,扩展分区是2,而逻辑分区则是从5开始的。任何情况下1、2、3、4都不能是逻辑分区号。 查看分区情况 df -h : 分区的理由主要有两点: 1、数据安全,分区之间的数据不会相互影响。 2、系统效能,数据放在连续的磁盘空间处理速度快。 分区时考虑到后续可能会规划新分区,故一般都设置扩展分区,在扩展分区中预留一部分空间备用。 逻辑格式化 硬盘在使用之前需要进行高级格式化(逻辑格式化)把硬盘分割成等大小的数据块,建立文件位置与数据库位置的索引

分布式消息队列

时光总嘲笑我的痴心妄想 提交于 2020-03-13 03:30:56
分布式消息队列 kafka介绍 基本架构 Kafka是开源的分布式消息队列,能够轻松实现高吞吐、可扩展、高可用,并且部署简单快速、开发接口丰富。 kafka分布式消息队列的作用: 解耦:将消息生产阶段和处理阶段拆分开,两个阶段互相独立各自实现自己的处理逻辑,通过kafka提供的消息写入和消费接口实现对消息的连接处理。降低开发复杂度,提高系统稳定性。 高吞吐量:kafka通过顺序读写磁盘提供可以和内存随机读写相匹敌的读写速度,灵活的客户端API设计,利用Linux操作系统提供的“零拷贝”特性减少消息网络传输时间,提供端到端的消息压缩传输,对同一主题下的消息采用分区存储,kafka通过诸多良好的特性利用廉价的机器就可以轻松实现高吞吐率。 高容错、高可用:kafka允许用户对分区配置多副本,kafka将副本均匀分配到各个broker存储,保证同一个分区的副本不会再同一台机器上存储(集群模式下),多副本之间采用Leader-Follower机制同步消息,只有Leader对外提供读写服务,当Leader以外失败、Broker进程关闭、服务宕机等情况导致数据不可用时,kafka会从Follwer中选择一个Leader继续提供读写服务。 可扩展:理论上kafka的性能随着Broker的增多而增加,增加一个Broker只需要为新增加的Broker设置一个唯一编号,编写好配置文件后

Greenplum数据分布和分区策略

微笑、不失礼 提交于 2020-03-12 12:15:48
Greenplum是一个大规模并行处理数据库,它由一个master和多个segment组成,其数据按照设定的分布策略分布于各个segment上。数据表的单个行会被分配到一个或多个segment上,但是有这么多的segment,它到底会被分到哪个或哪些segment上呢?分布策略会告诉我们。 分布策略 在Greenplum 5中,有2种分布策略: 哈希分布 随机分布 在Greenplum 6中,添加了另一个策略: 哈希分布 随机分布 复制分布 数据表的单个行会被分配到一个或多个segment上,但是有这么多的segment,它到底会被分到哪个或哪些segment上呢?分布策略会告诉我们。 哈希分布: 要使用这一策略,需要在创建表使用 “DISTRIBUTED BY(column,[...])” 子句。 散列算法使分布键将每一行分配给特定segment。相同值的键将始终散列到同一个segment。选择唯一的分布键(例如Primary Key)将确保较均匀的数据分布。哈希分布是表的默认分布策略。 如果创建表时未提供DISTRIBUTED子句,则将PRIMARY KEY(如果表真的有的话)或表的第一个合格列用作分布键。什么类型的列是合格列呢?几何类型或用户自定义数据类型的列不能用作Greenplum分布键列。如果表中没有合格的列,则退化为随机分布策略。 但是

MySQL优化(5):分区

时间秒杀一切 提交于 2020-03-11 16:37:12
分区: 分区也是MySQL优化中的一个重要方式 将一个表中的数据和索引,分散到不同的文件中进行存储 通常情况下,一个表,对应一组数据和索引文件,一个表的数据和索引集中存储在这组文件中 当一个表出现了大量的记录时,可以将其分布到不同的数据和索引文件中进行存储 Innodb来说,一个表对应多个ibd文件 MyISAM来说,一个表对应多个myi,myd文件 分布之后,每个文件中包含的记录数量显著减少,保证单独文件的执行效率 最常用的分区语法是:使用ID,将数据分布到多个分区中 在设计表的时候使用partition选项完成分区,需要提供分区算法和算法参数,完成分区操作 create table [table-name]( id int unsigned auto_increment primary key, subject varchar(255), content text )charset utf8 engine innodb partition by hash(id) partitions 10 ; 正常的建表语句,最后一行表示利用ID字段,使用HASH算法,将数据分布到十个分区内 建表成功之后,可以发现数据库中虽然只是一张表,但是文件夹中会有十个ibd文件,一个frm文件(结构文件)和一个par文件(分区结构文件) 分区成功后:客户端和以前没有任何区别

数据仓库常见面试问题

牧云@^-^@ 提交于 2020-03-10 10:47:25
一、 数据库 1、 Oracle数据库,视图与表的区别?普通视图与物化视图的区别?物化视图的作用?materialized view 答:a:视图是虚拟表,提高了表的安全性,视图没有实际物理空间,而表有实际存储的物理空间 b:物化视图存储了实实在在的数据,而普通视图之存储了定义 c:物化视图的优点像索引一样,提高查询性能。当基表发生变化时,物化视图也应当刷新。 物化视图是数据库中的一种存储数据的对象,和表一样,存储了数据。用于预先计算并保存表连接或者聚集等耗时较多的操作。这样,在执行查询的时候,就可以避开连接、聚集等耗时的操作,从而快速的得到结果。它可以查询表,视图甚至是其他物化视图中的数据。和视图不同的是,它存储了实实在在的数据,而视图只是存储了定义而已,所以,也是可以在物化视图上创建索引的。物化视图在很多方面,和索引很相似:使用它的主要目的是为了提高查询性能;物化视图对应用是透明的,增加或者删除物化视图不会影响应用程序中查询语句的正确性和有效性;物化视图会占用存储空间;当基表发生变化时,物化视图也应当刷新。通常情况下,物化视图被称为主表(在复制期间)或者明细表(在数据仓库中)。 2、 Oracle数据库,有哪几类索引,分别有什么特点? 答:三类索引 a:B树索引 b:文本索引 c:位图索引 3、 Union与Union All的区别? Union 会去掉重复,效率比 union

Linux之磁盘管理

天涯浪子 提交于 2020-03-09 19:39:40
一、Raid卡之初识 又叫磁盘冗余阵列,阵列卡。他的主要作用有三点 1、获取更高的容量 2、获取更高的性能 3、获取更强的安全性 raid卡按 支持的raid级别不同 和raid卡的 缓存容量 不同,分为基础raid卡和高级raid卡 左边是raid基础卡,右边是高级卡。 基础卡只支持raid0和raid1 高级卡支持0、1、3、5、10、11或者更多 常见的raid级别 raid0 主要是为了应对不做raid用不了的情况。 硬盘不做raid,识别不了硬盘。所以如果只有一块硬盘,就做个raid0吧。 安全性最低,其中一个硬盘坏掉了,所有数据都会报废。 用于安全性需求低的数据,不怕丢失的数据。优点就是读写快 raid1 只能有两块硬盘 算是个鸡肋,因为只能同时给两个硬盘做raid1。 raid5 最少需要3块硬盘,在写入之前有一个校验的过程。有一块硬盘用来做校验,用来保护数据的安全性,当其中一块硬盘坏了,就可以使用校验数据恢复丢失的数据。 可以在添加一块热位盘(RAID5 + spare),当坏了一块硬盘之后,可以启动热位盘来替换坏的硬盘。 三个有点都占一点,在并发量不高的时候,可以使用 raid10 读取速度和安全性都很高,但是很奢侈,并发量很大的时候可以使用 raid10的基本原理如下: 二、磁盘分区 磁盘分区表 所在位置:0磁头0磁道1扇区的秘密

重新组织和重新生成索引,来自联机丛书

回眸只為那壹抹淺笑 提交于 2020-03-09 04:28:33
无论何时对基础数据执行插入、更新或删除操作,SQL Server 数据库引擎都会自动维护索引。随着时间的推移,这些修改可能会导致索引中的信息分散在数据库中(含有碎片)。当索引包含的页中的逻辑排序(基于键值)与数据文件中的物理排序不匹配时,就存在碎片。碎片非常多的索引可能会降低查询性能,导致应用程序响应缓慢。有关详细信息,请参阅此 Microsoft 网站 。 您可以通过重新组织索引或重新生成索引来修复索引碎片。对于基于分区方案生成的已分区索引,可以在完整索引或索引的单个分区上使用下列方法之一。 检测碎片 决定使用哪种碎片整理方法的第一步是分析索引以确定碎片程度。通过使用系统函数 sys.dm_db_index_physical_stats,您可以检测特定索引、表或索引视图的所有索引、数据库中所有索引或所有数据库中所有索引中的碎片。对于已分区索引, sys.dm_db_index_physical_stats 还提供每个分区的碎片信息。 由 sys.dm_db_index_physical_stats 函数返回的结果集包含以下列。 列 说明 avg_fragmentation_in_percent 逻辑碎片(索引中的无序页)的百分比。 fragment_count 索引中的碎片(物理上连续的叶页)数量。 avg_fragment_size_in_pages 索引中一个碎片的平均页数。

MYSQL--表分区、查看分区

我的未来我决定 提交于 2020-03-06 08:20:01
一、 mysql分区简介 数据库分区 数据库分区是一种物理数据库设计技术。虽然分区技术可以实现很多效果,但其主要目的是为了在特定的SQL操作中减少数据读写的总量以缩减sql语句的响应时间,同时对于应用来说分区完全是透明的。 MYSQL的分区主要有两种形式:水平分区和垂直分区 水平分区(HorizontalPartitioning) 这种形式的分区是对根据表的行进行分区,通过这样的方式不同分组里面的物理列分割的数据集得以组合,从而进行个体分割(单分区)或集体分割(1个或多个分区)。 所有在表中定义的列在每个数据集中都能找到,所以表的特性依然得以保持。水平分区一定要通过某个属性列来分割。常见的比如年份,日期等。 垂直分区(VerticalPartitioning) 这种分区方式一般来说是通过对表的垂直划分来减少目标表的宽度,使某些特定的列被划分到特定的分区,每个分区都包含了其中的列所对应所有行。 可以用 showvariables like '%partition%'; 命令查询当前的mysql数据库版本是否支持分区。 分区的作用:数据库性能的提升和简化数据管理 在扫描操作中,mysql优化器只扫描保护数据的那个分区以减少扫描范围获得性能的提高。 分区技术使得数据管理变得简单,删除某个分区不会对另外的分区造成影响,分区有系统直接管理不用手工干预。 mysql从5.1版本开始支持分区

Flink DataStream 关联维表实战

拟墨画扇 提交于 2020-03-03 21:03:46
上篇博客提到 Flink SQL 如何 Join 两个数据流,有读者反馈说如果不打算用 SQL 或者想自己实现底层操作,那么如何基于 DataStream API 来关联维表呢?实际上由于 Flink DataStream API 的灵活性,实现这个需求的方式是非常多样的,但是大部分用户很难在设计架构时就考虑得很全面,可能会走不少弯路。 针对于此,笔者根据工作经验以及社区资源整理了用 DataStream 实现 Join 维表的常见方式,并给每种的方式优劣和适用场景给出一点可作为参考的个人观点。 衡量指标 总体来讲,关联维表有三个基础的方式:实时数据库查找关联(Per-Record Reference Data Lookup)、预加载维表关联(Pre-Loading of Reference Data)和维表变更日志关联(Reference Data Change Stream),而根据实现上的优化可以衍生出多种关联方式,且这些优化还可以灵活组合产生不同效果(不过为了简单性这里不讨论同时应用多种优化的实现方式)。对于不同的关联方式,我们可以从以下 7 个关键指标来衡量(每个指标的得分将以 1-5 五档来表示): 实现简单性: 设计是否足够简单,易于迭代和维护。 吞吐量: 性能是否足够好。 维表数据的实时性: 维度表的更新是否可以立刻对作业可见。 数据库的负载:

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

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