数据库垂直分表和水平分别到底什么意思
发布网友
发布时间:2022-04-20 06:06
我来回答
共3个回答
懂视网
时间:2022-04-30 09:44
--制造数据不做垂直切分
create table test(
a number,
b varchar2(4000),
c varchar2(4000),
d varchar2(4000),
e varchar2(4000),
f varchar2(4000),
g varchar2(4000),
h varchar2(4000)
);
INSERT INTO test
SELECT ROWNUM,
rpad(‘*‘, 4000, 1),
rpad(‘*‘, 4000, 1),
rpad(‘*‘, 4000, 1),
rpad(‘*‘, 4000, 1),
rpad(‘*‘, 4000, 1),
rpad(‘*‘, 4000, 1),
rpad(‘*‘, 4000, 1)
FROM DUAL
CONNECT BY ROWNUM <= 100000;
commit;
create table test1 as select * from test;
--制造数据做垂直切分
create table test_cuizhi(
a number
);
INSERT INTO test_cuizhi
SELECT ROWNUM
FROM DUAL
CONNECT BY ROWNUM <= 100000;
commit;
create table test_cuizhi1 as select * from test_cuizhi;
--開始測试,仅仅是取两个最小的字段
SQL> set timing on
SQL> set autotrace traceonly
SQL> select t.a,t1.a from test t, test1 t1 where t.a=t1.a;
已选择100000行。
已用时间: 00: 00: 53.17
运行计划
----------------------------------------------------------
Plan hash value: 2400077556
----------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 44504 | 1129K| 173K (1)| 00:34:38 |
|* 1 | HASH JOIN | | 44504 | 1129K| 173K (1)| 00:34:38 |
| 2 | TABLE ACCESS FULL| TEST | 44504 | 564K| 87801 (1)| 00:17:34 |
| 3 | TABLE ACCESS FULL| TEST1 | 117K| 1490K| 85344 (1)| 00:17:05 |
----------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - access("T"."A"="T1"."A")
Note
-----
- dynamic sampling used for this statement
统计信息
----------------------------------------------------------
52 recursive calls
0 db block gets
795627 consistent gets
534917 physical reads
0 redo size
1664840 bytes sent via SQL*Net to client
73664 bytes received via SQL*Net from client
6668 SQL*Net roundtrips to/from client
2 sorts (memory)
0 sorts (disk)
100000 rows processed
SQL> /
已选择100000行。
已用时间: 00: 00: 33.36
运行计划
----------------------------------------------------------
Plan hash value: 2400077556
----------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 44504 | 1129K| 173K (1)| 00:34:38 |
|* 1 | HASH JOIN | | 44504 | 1129K| 173K (1)| 00:34:38 |
| 2 | TABLE ACCESS FULL| TEST | 44504 | 564K| 87801 (1)| 00:17:34 |
| 3 | TABLE ACCESS FULL| TEST1 | 117K| 1490K| 85344 (1)| 00:17:05 |
----------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - access("T"."A"="T1"."A")
Note
-----
- dynamic sampling used for this statement
统计信息
----------------------------------------------------------
0 recursive calls
0 db block gets
795446 consistent gets
552087 physical reads
0 redo size
1664840 bytes sent via SQL*Net to client
73664 bytes received via SQL*Net from client
6668 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
100000 rows processed
SQL> select t.a,t1.a from test_cuizhi t, test_cuizhi1 t1 where t.a=t1.a;
已选择100000行。
已用时间: 00: 00: 06.17
运行计划
----------------------------------------------------------
Plan hash value: 2501302817
-------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time |
-------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 88629 | 2250K| | 310 (2)| 00:00:04 |
|* 1 | HASH JOIN | | 88629 | 2250K| 2168K| 310 (2)| 00:00:04 |
| 2 | TABLE ACCESS FULL| TEST_CUIZHI | 88629 | 1125K| | 42 (3)| 00:00:01 |
| 3 | TABLE ACCESS FULL| TEST_CUIZHI1 | 101K| 1288K| | 39 (3)| 00:00:01 |
-------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - access("T"."A"="T1"."A")
Note
-----
- dynamic sampling used for this statement
统计信息
----------------------------------------------------------
52 recursive calls
0 db block gets
7139 consistent gets
153 physical reads
0 redo size
1664840 bytes sent via SQL*Net to client
73664 bytes received via SQL*Net from client
6668 SQL*Net roundtrips to/from client
2 sorts (memory)
0 sorts (disk)
100000 rows processed
SQL> /
已选择100000行。
已用时间: 00: 00: 06.06
运行计划
----------------------------------------------------------
Plan hash value: 2501302817
-------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time |
-------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 88629 | 2250K| | 310 (2)| 00:00:04 |
|* 1 | HASH JOIN | | 88629 | 2250K| 2168K| 310 (2)| 00:00:04 |
| 2 | TABLE ACCESS FULL| TEST_CUIZHI | 88629 | 1125K| | 42 (3)| 00:00:01 |
| 3 | TABLE ACCESS FULL| TEST_CUIZHI1 | 101K| 1288K| | 39 (3)| 00:00:01 |
-------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - access("T"."A"="T1"."A")
Note
-----
- dynamic sampling used for this statement
统计信息
----------------------------------------------------------
0 recursive calls
0 db block gets
7008 consistent gets
0 physical reads
0 redo size
1664840 bytes sent via SQL*Net to client
73664 bytes received via SQL*Net from client
6668 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
100000 rows processed
版权声明:本文博客原创文章,博客,未经同意,不得转载。
数据库设计--垂直拆分数据
标签:
热心网友
时间:2022-04-30 06:52
垂直分表,指的是把主键字段拿出来,分的两个表都有,然后原表其他字段根据实际情况,例如查询频率,放两个表中。
水平分表相当于数据存储拆开,建多个表,每个表字段完全一样,存放不同数据,例如按照月份存放
热心网友
时间:2022-04-30 08:10
分库!举个例子
有10万员工信息,可以建10个表
每表存放1万员工。他们结构是一样的就表名差异,一表放的员工是工号1到9999的相近信息。
另一种就一个表但内部分区,数据放在不同的物理文件中。
数据库垂直分表和水平分别到底什么意思
垂直分表,指的是把主键字段拿出来,分的两个表都有,然后原表其他字段根据实际情况,例如查询频率,放两个表中。水平分表相当于数据存储拆开,建多个表,每个表字段完全一样,存放不同数据,例如按照月份存放
数据库水平拆分和垂直拆分 怎么实现
垂直拆分是指数据表列的拆分,把一张列比较多的表拆分为多张表 通常我们按以下原则进行垂直拆分:把不常用的字段单独放在一张表;把text,blob等大字段拆分出来放在附表中;经常组合查询的列放在一张表中;垂直拆分更多时候就应该在数据表设计之初就执行的步骤,然后查询的时候用join关键起来即可;水平拆分 水...
数据库水平分库和垂直分库有什么区别
一般来说,就是按照用户属性(地市或者ID的hash)进行分库,或者按照业务功能块进行分库。水平分库方式主要根据用户属性(如地市)拆分物理数据库。一种常见的方式是将全省划分为个大区。垂直分库方式:根据业务维度和数据的访问量等,进行数据的分离,剥离为多个数据库。例如,将一些公用的配置信息存储到一个数据库中进行单独...
数据库反范式化表设计和表的垂直和水平拆分什么意思?
是根据主要查询条件,水平分表。例如,用户关系表, 根据用户id:用户id为 1, 2, 3, 4,5 的五个用户,采用取模的方式水平分表。将uid mod 3,取余数 这样,id为1,4的用户就在 t_user_1 的表里, id 为2,5 的用户在 t_user_2的表里,id为3的就在t_user_3的表里。这样,所...
MySQL数据库中的列拆分技术简介mysql列拆分
MySQL 数据库中的表拆分技术有三种,分别是水平拆分,垂直拆分和混合拆分,具体特征如下:1、水平拆分:即将某表按照行拆分为多个表,可以有效的将查找的时间节约到最低,也能细粒度的将行拆分,使得查询过程高效;2、垂直拆分:即将某表按照列进行拆分,这种拆分方式可以把不常需要的数据降价存储,减少...
Mycat分库分表拆分策略——垂直分库、水平分表(水平分表分片规则)
Mycat的拆分策略主要包括垂直分库和水平分表。垂直分库是根据业务逻辑将表分布在不同的数据库中,例如,将购物、订单和用户相关表分别存储在不同数据库,以分散压力。而水平分表则是将表中的数据根据规则分布到多个数据库中,以应对大数据量的管理。在垂直拆分(分库)示例中,假设我们有一个包含商品、...
一文读懂Mysql数据库的分库分表和读写分离
垂直拆分根据业务逻辑,如将不常用字段分开存储,但现代分库分表更倾向于水平拆分,如按ID取模分配到不同数据库。水平拆分是根据ID或其他分片算法,将数据分散到多个库或表,以解决单表数据量过大导致的性能下降和并发访问压力。数据量超过一定阈值(如500万行或2GB),分表变得必要。然而,单纯的分表...
数据库怎么拆分表
数据库拆分表可分为水平拆分和垂直拆分,水平拆分是按照表中逻辑关系和相关条件把表拆分成多个分表;垂直拆分是按照不同表切分到不同数据库中去。随着数据的不断扩大,有的数据表的规模会以几何级增长,当数据达到一定规模时,数据的查询,读取性能就会变得缓慢,这时就需要拆分数据表,接下来在文章中将...
mysql 垂直分表 设计_水平分表和垂直分表
1、水平分库:依据字段和策略(如hash、range)将一个库中的数据拆分至多个库,每个库结构相同,数据不交集,形成全量数据集合。适用于并发量上来的场景,通过增加库数量,缓解IO和CPU压力。2、水平分表:依据字段和策略将一个表中的数据拆分至多个表,每个表结构相同,数据不交集,形成全量数据集合。适用...
互联网拆分是什么意思
1. 互联网拆分,首先指的是数据库层面的垂直拆分和水平拆分。2. 垂直拆分,也称为分库,其目的是为了解决不同表之间的IO竞争以及单机存储容量限制的问题。例如,可以将数据库拆分为商家库、客户库和订单库等。3. 水平拆分,也称为分表,主要作用是提升数据库的查询速度。通过按照业务维度进行垂直拆分,...