问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

数据库垂直分表和水平分别到底什么意思

发布网友 发布时间: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的表里。这样,所...

Mycat分库分表拆分策略——垂直分库、水平分表(水平分表分片规则)

Mycat的拆分策略主要包括垂直分库和水平分表。垂直分库是根据业务逻辑将表分布在不同的数据库中,例如,将购物、订单和用户相关表分别存储在不同数据库,以分散压力。而水平分表则是将表中的数据根据规则分布到多个数据库中,以应对大数据量的管理。在垂直拆分(分库)示例中,假设我们有一个包含商品、...

一文搞懂MySQL数据库分库分表

垂直分库:根据业务模块划分,如电商系统中的用户、商品、订单等独立数据库,便于独立变更和隔离影响。 水平分表(不建议):对大表的拆分,如订单表按规则切分到多张表,但仍存在库级IO瓶颈。 水平分库分表:将单表数据分散到多个服务器,每个服务器有自己的库和表,有效缓解性能瓶颈。1.2 区分...

分表是什么意思?

在数据库中,为了能够更高效地存储和检索数据,经常需要将一个大表拆分成多个小表,这就是所谓的分表。分表可以提高查询的速度,并且减少锁的冲突,从而提高系统的并发性能。分表的实现方法主要有两种:垂直分表和水平分表。垂直分表指的是按照不同的业务功能,将同一张表中的不同字段划分到不同的表...

数据库怎么拆分表

数据库拆分表可分为水平拆分和垂直拆分,水平拆分是按照表中逻辑关系和相关条件把表拆分成多个分表;垂直拆分是按照不同表切分到不同数据库中去。随着数据的不断扩大,有的数据表的规模会以几何级增长,当数据达到一定规模时,数据的查询,读取性能就会变得缓慢,这时就需要拆分数据表,接下来在文章中将...

MySQL如何实现分库分表,如何提高查询效率

在大型电商网站中,随着业务的增多,数据库中的数据量也是与日俱增,这时候就要将数据库进行分库分表了。1、如何分库分表?两种解决方案:垂直拆分、水平拆分垂直拆分:根据业务进行拆分,比如可以将一张表中的多个字段拆成两张表,一张是不经常更改的,一张是经常改的。水平拆分:即根据表来进行分割:...

探秘MySQL单表上亿数据解析高效数据管理技巧mysql上亿单表

水平分表 水平分表是把一个表按照一定的规则“横向”切割成多个表,每张表存储一段数据范围。在查询数据时,需要对多个表进行查找,因此也需要对查询语句进行优化。例如:1. 使用union all将多个表的结果集合并成一个结果集;2. 使用MySQL的分布式查询工具,如MyCat等。垂直分表 垂直分表是将一个表...

数据库分库分表面试 数据库水平拆分 数据库怎么拆分表 垂直库与水平库 如何建立垂直数据查询表 数据库的schema是什么 数据库分表 垂直架构和水平架构 数据库表拆分
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
竹笋快速生长的过程叫拔节 ...上打4000块钱认证金就能把卡号该过要打认证金吗? 我想问问房间太过潮湿怎么处理 装修好房屋墙面防潮怎么做 潮湿怎么解决房子潮湿如何解决 斜面的摩擦力问题 像"斑斓“这样表示颜色多的词语还有哪些? 你能写出几个与十二生肖的有... 广元红星塔相关背景 广元红星塔简介 西红柿疙瘩汤如何做简单又美味? sqlserver数据库怎么分表 为什么鸟不拉屎 数据库分库,分表有哪些要注意的以及解决办法 拉屎不生蛆的地方,鸟不拉屎的地方是什么意思? 数据库为什么分库分表 鸟不拉屎 狗不下蛋是啥意思 数据库中表分割和表分区的区别是什么? 鸟不拉屎 鸡不生蛋 ~什么意思? 数据库为什么要分库分表 鸟不拉屎的典故是什么? 数据库分表原理? 鸟不拉屎的典故是什么?拜托了各位 谢谢 数据库一个表数据太多了,如何分表? 成语“鸟不拉屎”是什麽意思? mysql分表的3种方法介绍,什么是分区 鸟不拉屎,狗不生蛋,乌龟不靠岸。这句话是什么意... 如何对大数据库进行分表 鸟不拉屎? 数据库为什么要分库分表,数据库分库分表 鸟不拉屎的地方是什么意思? 为什么喜欢把偏僻的地方都用&quot;鸟不拉屎的地方&quot;来形容? 在一个数据库中为什么要进行分表啊? 鸟雀入宅进屋 什么是分表和分区 MySql数据库分区和分表方法 鸟不拉屎的反意词 请教下数据库分区 分表主要是解决什么问题出现的? 鸟不拉屎的地方是什么意思 mysql数据库分库分表哪个工具好,我整理出来了五个... 鸟不拉屎是什么意思? 小鸟飞到屋里拉屎怎么解释 小鸟飞进房间里在床上大... 为什么手机无缘无故变成繁体字了,改不过来 中国三大蚂蝗山是什么? 听说墨脱有很多蚂蝗?具体在那个地方?如果被咬了... 去墨脱过蚂蟥区的时候应该注意什么 徒步墨脱蚂蟥最怕什么 蚂蝗山是在中国那个地方 墨脱这个地方为什么蚂蟥那么多啊?听说很恐怖的啊 徒步墨脱经过蚂蟥山吗?我一个人想找老驴(大部队... 进入墨脱,有一个著名的蚂蝗沟,里面到处是蚂蝗,... 墨脱真的有那么的危险?