hive与mysql的数据分区的异同
数据分区是什么? 数据库分区是一种物理数据库设计技术,DBA和数据库建模人员对其相当熟悉。 分区把一大块数据分成了n小块,这样查询的时候很快定位到某一小块上,在小块中寻址要快很多; 多大的数据量才需要分区? 参考标准,如果一张表的记录超过在超过1000w,并以每月百万的数据量增长,那需要分区。 为什么需要数据分区? 性能提升;方便管理;避免数据倾斜 改善数据库的结构有两种,一种是采用存储过程代替普通的SQL语句, 另外一种就是使用数据库系统中增强索引和规划分区表进行优化, 数据分区 主要目的是为了在特定的SQL操作中减少数据读写的总量以缩减响应时间。 有几种常见的数据分区?各自的优缺点 (基于mysql) 行分区 ----按日期的分区 列分区--- 参数值个数比较少 国际化按国家的分区 range分区:行数据基于属于一个给定连续区间的列值被放入分区,mysql5.5开始支持range columns的分区。 list分区:分区面向的是离散的值,mysql5.5支持list columns。 hash分区:根据用户自定义的表达式的返回值来进行分区,返回值不能为负数。 key分区:根据MYSQL数据库提供的哈希函数来进行分区。 谨记:无论使用何种类型的分区,分区总是在创建时就自动的顺序编号,且从0开始记录; 只有RANGE和LIST支持子分区,但是子分区内只能使用HASH和KEY分区。