数据库分区

oracle表结构

人盡茶涼 提交于 2019-12-06 02:35:05
表管理 新建表 语法 create table 表名 ( 列名1 类型(长度), 列名2 类型(长度), 列名3 类型(长度) ); create table :关键字,建表 后跟新建表的表名,表名长度有限制,不超过32位,以英文单词或者缩写组成,单词之间用下划线连接 表名必须是数据库中唯一的,重复会报错. 列名:英文单词缩写组成,长度不超过30位,不能以数字,下划线或特殊字符开头.单词之间以下划线连接. 括号后须有分号结束; SQL> create table stu_test 2 ( 3 stu_id number(6), 4 stu_name varchar2(50), 5 stu_age number(3) 6 ); 表已创建。 添加注释 SQL> comment on table stu_test is '学生表'; 注释已创建。 SQL> comment on column stu_test.stu_id is '学生编号'; 注释已创建。 SQL> comment on column stu_test.stu_name is '学生姓名'; 注释已创建。 SQL> comment on column stu_test.stu_age is '学生年龄'; 注释已创建。 comment on table:关键字,即表的注释 comment on column:关键字

单表数据量超过千万的优化方案

感情迁移 提交于 2019-12-06 02:14:28
1. 数据库设计和表创建时就要考虑性能 2.sql 的编写需要注意优化 4. 分区 4. 分表 5. 分库 数据库设计和表创建时就要考虑性能 设计表时要注意: 表字段避免null值出现,null值很难查询优化且占用额外的索引空间,推荐默认数字0代替null。 尽量使用INT而非BIGINT,如果非负则加上UNSIGNED(这样数值容量会扩大一倍),当然能使用TINYINT、SMALLINT、MEDIUM_INT更好。 使用枚举或整数代替字符串类型 尽量使用TIMESTAMP而非DATETIME 单表不要有太多字段,建议在20以内 用整型来存IP 索引 索引并不是越多越好,要根据查询有针对性的创建,考虑在WHERE和ORDER BY命令上涉及的列建立索引,可根据EXPLAIN来查看是否用了索引还是全表扫描 应尽量避免在WHERE子句中对字段进行NULL值判断,否则将导致引擎放弃使用索引而进行全表扫描 值分布很稀少的字段不适合建索引,例如"性别"这种只有两三个值的字段 字符字段只建前缀索引 字符字段最好不要做主键 不用外键,由程序保证约束 尽量不用UNIQUE,由程序保证约束 使用多列索引时主意顺序和查询条件保持一致,同时删除不必要的单列索引 简言之就是使用合适的数据类型,选择合适的索引 # 选择合适的数据类型 ( 1 )使用可存下数据的最小的数据类型,整型 < date,time <

mysql分区及实例演示

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-06 01:38:43
一、为什么要分区? 需求:大数据。解决方案:分而治之,更细一点即为。将大表和大索引分为一个更小的操作单元 在mysql中,分区允许将表、索引和索引编排表细分为更小的单元。分区后,每个分区有自己单独的名称。对于DBA来讲,这些分区可以统一管理,也可以分开管理。 但是对于应用程序来讲,分区的表和没有分区的表示一样的。换句话来讲,分区对于应用是透明的,只是数据库对于数据的重新整理。 Mysql分区,这个是mysql对于分区的官方解释。 1. 分区的作用 a)提升性能 应该说,几乎所有分区的目的都是用来提升性能的。不是谁哪天早上吃着鸡蛋灌饼,说咱们分个区玩玩吧!不是的。那么分区是如何来提升检索数据的性能的呢?没有分区之前,数据每次在查询和检索总是面向的是整个数据库和表。分区之后,mysql针对每个分区生成特定的数据文件与索引文件。每次只会检索特定的部分数据,因此可以更好的来执行和维护数据库。究其原因还是因为在分区之后表指派到不同的物理驱动器上,这样便可在同时访问多个分区时减少物理 I/O 争用。 b)易于管理 对于一些无用的冗余的历史数据来讲,可以根据分区之后直接删除相应的分区。操作起来更加简便,因为执行数以万计的数据远比直接删除文件来的困难的多、时间也更加的长。 c)容错 分区之后相比分区之前,一张表从之前一个文件分为现在的三个文件。分区之后即使一个文件出现破坏,也不会影响其他数据。 2

真的,Kafka 入门一篇文章就够了

谁都会走 提交于 2019-12-05 22:52:13
初识 Kafka 什么是 Kafka Kafka 是由 Linkedin 公司开发的,它是一个分布式的,支持多分区、多副本,基于 Zookeeper 的分布式消息流平台,它同时也是一款开源的 基于发布订阅模式的消息引擎系统 。 Kafka 的基本术语 消息:Kafka 中的数据单元被称为 消息 ,也被称为记录,可以把它看作数据库表中某一行的记录。 批次:为了提高效率, 消息会 分批次 写入 Kafka,批次就代指的是一组消息。 主题:消息的种类称为 主题 (Topic),可以说一个主题代表了一类消息。相当于是对消息进行分类。主题就像是数据库中的表。 分区:主题可以被分为若干个分区(partition),同一个主题中的分区可以不在一个机器上,有可能会部署在多个机器上,由此来实现 kafka 的 伸缩性 ,单一主题中的分区有序,但是无法保证主题中所有的分区有序 生产者: 向主题发布消息的客户端应用程序称为 生产者 (Producer),生产者用于持续不断的向某个主题发送消息。 消费者:订阅主题消息的客户端程序称为 消费者 (Consumer),消费者用于处理生产者产生的消息。 消费者群组:生产者与消费者的关系就如同餐厅中的厨师和顾客之间的关系一样,一个厨师对应多个顾客,也就是一个生产者对应多个消费者, 消费者群组 (Consumer Group)指的就是由一个或多个消费者组成的群体。

Oracle 分区默认segment大小变化(64k—>8M)

旧街凉风 提交于 2019-12-05 22:29:29
原文链接: http://www.cnblogs.com/wcwen1990/p/6656545.html _partition_large_extents和_index_partition_large_extents 参考: http://www.xifenfei.com/2013/08/%E5%88%86%E5%8C%BA%E9%BB%98%E8%AE%A4segment%E5%A4%A7%E5%B0%8F%E5%8F%98%E5%8C%9664k-8m.html 从11.2.0.2开始创建分区表,每个分区默认大小为8M,是由_partition_large_extents参数控制,可以算是11.2.0.2开始的一个新特性,为了减少extent数量,提高分区表性能,而引入的一个参数,默认为true,即分区表的每个extent为8M,这里对于_partition_large_extents为true和false的情况进行了测试。 例1: 数据库参数情况如下: SQL> select * from v$version; BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition

浅谈分布式一致性与CAP/BASE/ACID理论

岁酱吖の 提交于 2019-12-05 21:35:47
浅谈分布式一致性与CAP/BASE/ACID理论 https://www.cnblogs.com/zhang-qc/p/6783657.html    ##转载请注明   CAP理论(98年秋提出,99年正式发表): C( Consistency)一致性: 在分布式系统中,数据一致更新,所有数据变动都是同步的; A( Availability)可用性: 分布式系统中,部分节点故障,系统是否依然可响应客户端请求(对数据更新具备高可用性); P( Partition tolerance)分区容错性: 分区是相对于通信的时延要求来讲,指在时延要求内部分节点与其它节点联系不可达,在该情况下系统是否依然可用(可靠性)。该场景下不同于节点宕机情况,可能由于网络交换器故障,使形成不同分区,分区不可达,或者是当前延迟过大,超过了设定的值。 点对点的网络上,复杂的拓扑结构和独立的路由选择可能使连接具有非对称(asymmetric)、非传递的特性,使进程间不可以通信。 由于网络存在延迟和丢包等问题,P性质相对必须满足,所以常在C和A之间进行权衡。CAP理论说明系统的架构只能满足三点中的二点,无法设计出满足三点的完美的系统。可理解为:网络环境是不可靠的,因此会存在分区的发生,如果数据仅单点存储,那么其余分区的节点无法访问,因此分区无法容错。可以增加该数据项的备份,这样发生分区后各分区仍有该数据

mysql error code

ε祈祈猫儿з 提交于 2019-12-05 16:52:42
mysql error code 1005:创建表失败 1006:创建数据库失败 1007:数据库已存在,创建数据库失败 1008:数据库不存在,删除数据库失败 1009:不能删除数据库文件导致删除数据库失败 1010:不能删除数据目录导致删除数据库失败 1011:删除数据库文件失败 1012:不能读取系统表中的记录 1020:记录已被其他用户修改 1021:硬盘剩余空间不足,请加大硬盘可用空间 1022:关键字重复,更改记录失败 1023:关闭时发生错误 1024:读文件错误 1025:更改名字时发生错误 1026:写文件错误 1032:记录不存在 1036:数据表是只读的,不能对它进行修改 1037:系统内存不足,请重启数据库或重启服务器 1038:用于排序的内存不足,请增大排序缓冲区 1040:已到达数据库的最大连接数,请加大数据库可用连接数 1041:系统内存不足 1042:无效的主机名 1043:无效连接 1044:当前用户没有访问数据库的权限 1045:不能连接数据库,用户名或密码错误 1048:字段不能为空 1049:数据库不存在 1050:数据表已存在 1051:数据表不存在 1054:字段不存在 1065:无效的SQL语句,SQL语句为空 1081:不能建立Socket连接 1114:数据表已满,不能容纳任何记录 1116:打开的数据表太多 1129

Hadoop Hive基础sql语法

白昼怎懂夜的黑 提交于 2019-12-05 14:05:37
1.DDL 操作 1.建表 2.3.创建简单表 4.创建外部表 5.建分区表 6.建Bucket表 7.创建表并创建索引字段ds 8.复制一个空表 9.显示所有表 10.按正条件正则表达式显示表 11.修改表结构 12.表添加一列 13.添加一列并增加列字段注释 14.更改表名 15.删除列 16.增加删除分区 17.重命名表 18.修改列的名字类型位置注释 19.表添加一列 20.添加一列并增加列字段注释 21.增加更新列 22.增加表的元数据信息 23.改变表文件格式与组织 24.创建删除视图 25.创建数据库 26.显示命令 2.DML 操作元数据存储 1.向数据表内加载文件 2.3.加载本地数据同时给定分区信息 4.OVERWRITE 5.将查询结果插入Hive表 6.将查询结果写入HDFS文件系统 7.INSERTINTO 3.DQL 操作数据查询SQL 1.1 基本的Select操作 2.例如 3.按先件查询 4.将查询数据输出至目录 5.将查询结果输出至本地目录 6.选择所有列到本地目录 7.将一个表的统计结果插入另一个表中 8.将多表数据插入到同一表中 9.将文件流直接插入文件 10.2 基于Partition的查询 11.3 Join 4.从SQL到HiveQL应转变的习惯 1.Hive不支持等值连接 2.分号字符 3.IS NOT NULL 4

MySQL学习笔记:高级篇

橙三吉。 提交于 2019-12-05 11:59:18
1. 存储引擎 1.1 InnoDB表引擎 1.2 MyISAM表引擎 1.3 其他的表引擎 2. 索引 2.1 索引对性能的影响 2.2 索引的使用场景 2.3 索引的类型 2.4 MySQL索引的创建原则 2.5 MySQL索引的注意事项 3. 查询优化 3.1 查找分析SQL查询慢的原因 3.2 优化查询过程中的数据访问 3.3 优化长难的查询语句 3.4 优化特定类型的查询语句 4. MySQL高可扩展和高可用 4.1 分区表的原理 4.2 分库分表的原理 4.2.1 水平分表 4.2.2 垂直分表 4.3 MySQL的复制原理及负载均衡 4.4 MySQL安全性 4.4.1 SQL查询的安全方案 4.4.2 MySQL的其他安全设置 引用资料 1. 存储引擎 1.1 InnoDB表引擎 默认事务型引擎,最重要最广泛的存储引擎,性能非常优秀 。数据存储在 共享表空间 ,可以通过配置分开。 对主键查询的性能高于其他类型的存储引擎 。内部做了很多优化,从磁盘读取数据时自动在内存构建hash索引, 插入数据时自动构建插入缓冲区 通过一些机制和工具支持真正的 热备份 ,支持 崩溃后的安全恢复 ,支持 行级锁 ,支持 外键 1.2 MyISAM表引擎 mysql5.5版本之前的默认存储引擎 ,拥有全文索引、压缩、空间函数。 不支持事务和行级锁 , 支持表锁 ,不支持奔溃后的安全恢复

MySQL数据库分区的一些应用

断了今生、忘了曾经 提交于 2019-12-05 05:05:57
http://hi.baidu.com/jxvip/item/d6084ea5094229258919d30c http://lehsyh.iteye.com/blog/732719 mysql的表分区 MySQL数据库分区的一些应用 分区的一些优点: 1)与单个磁盘或文件系统分区相比,可以存储更多的数据。 2)对于那些已经失去保存意义的数据,通常可以通过删除与那些数据有关的分区,很容易地删除那些数据。相反地,在某些情况下,添加新数据的过程又可以通过为那些新数据专门增加一个新的分区来很方便地实现。 3)一些查询可以得到极大的优化,这主要是借助于满足一个给定where 语句的数据可以只保存在一个或多个分区内,这样在查找时就不用查找其他剩余的分区。因为分区可以在创建了分区表后进行修改,所以在第一次配置分区方案时还 不曾这么做时,可以重新组织数据,来提高那些常用查询的效率。 4)涉及到例如sum() 和 count()这样聚合函数的查询,可以很容易地进行并行处理。这种查询的一个简单例子如 “select salesperson_id, count(orders) as order_total from sales group by salesperson_id;”。通过“并行”, 这意味着该查询可以在每个分区上同时进行,最终结果只需通过总计所有分区得到的结果。 5