问答文章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的表里。这样,所...

MySQL数据库中的列拆分技术简介mysql列拆分

MySQL 数据库中的表拆分技术有三种,分别是水平拆分,垂直拆分和混合拆分,具体特征如下:1、水平拆分:即将某表按照行拆分为多个表,可以有效的将查找的时间节约到最低,也能细粒度的将行拆分,使得查询过程高效;2、垂直拆分:即将某表按照列进行拆分,这种拆分方式可以把不常需要的数据降价存储,减少...

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

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

一文读懂Mysql数据库的分库分表和读写分离

垂直拆分根据业务逻辑,如将不常用字段分开存储,但现代分库分表更倾向于水平拆分,如按ID取模分配到不同数据库。水平拆分是根据ID或其他分片算法,将数据分散到多个库或表,以解决单表数据量过大导致的性能下降和并发访问压力。数据量超过一定阈值(如500万行或2GB),分表变得必要。然而,单纯的分表...

数据库怎么拆分表

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

mysql 垂直分表 设计_水平分表和垂直分表

1、水平分库:依据字段和策略(如hash、range)将一个库中的数据拆分至多个库,每个库结构相同,数据不交集,形成全量数据集合。适用于并发量上来的场景,通过增加库数量,缓解IO和CPU压力。2、水平分表:依据字段和策略将一个表中的数据拆分至多个表,每个表结构相同,数据不交集,形成全量数据集合。适用...

互联网拆分是什么意思

1. 互联网拆分,首先指的是数据库层面的垂直拆分和水平拆分。2. 垂直拆分,也称为分库,其目的是为了解决不同表之间的IO竞争以及单机存储容量限制的问题。例如,可以将数据库拆分为商家库、客户库和订单库等。3. 水平拆分,也称为分表,主要作用是提升数据库的查询速度。通过按照业务维度进行垂直拆分,...

数据库分库分表面试 数据库水平拆分 数据库怎么拆分表 垂直库与水平库 如何建立垂直数据查询表 数据库的schema是什么 数据库分表 垂直架构和水平架构 数据库表拆分
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
请问昆山正仪到江苏省昆山市出口加工区新竹路99号 怎么坐班车最近? 跪求苏州神达电脑地址!!! 华为运动耳机挂脖式怎么配对 雅酷美挂脖式无线蓝牙防水耳机-运动时尚,自由畅听 已知函数f(x)=cos^2x-sin^2x+2根号3sinxcosx+1 原先微信有联系后来突然对方要求我对他进行朋友验证我没有他电话号码... 已知函数f(x)=cos^2x-sin^2x+2根号3sinxcosx 已知函数fx=cos^2*x-sin^2*x+2sinx*cosx,求fx的最小正周期,并求当... 已知函数f(x)=cos2x-sin2x 4sinx·cosx求f(x)的最小正周期,并求当x为... 已知f(x)=cos^2x-sin^x+2sinxcosx。①求函数最小正周期②当x∈【0... sqlserver数据库怎么分表 为什么鸟不拉屎 数据库分库,分表有哪些要注意的以及解决办法 拉屎不生蛆的地方,鸟不拉屎的地方是什么意思? 数据库为什么分库分表 鸟不拉屎 狗不下蛋是啥意思 数据库中表分割和表分区的区别是什么? 鸟不拉屎 鸡不生蛋 ~什么意思? 数据库为什么要分库分表 鸟不拉屎的典故是什么? 数据库分表原理? 鸟不拉屎的典故是什么?拜托了各位 谢谢 数据库一个表数据太多了,如何分表? 成语“鸟不拉屎”是什麽意思? mysql分表的3种方法介绍,什么是分区 鸟不拉屎,狗不生蛋,乌龟不靠岸。这句话是什么意... 如何对大数据库进行分表 鸟不拉屎? 数据库为什么要分库分表,数据库分库分表 鸟不拉屎的地方是什么意思? 为什么喜欢把偏僻的地方都用&quot;鸟不拉屎的地方&quot;来形容? 在一个数据库中为什么要进行分表啊? 鸟雀入宅进屋 什么是分表和分区 MySql数据库分区和分表方法 鸟不拉屎的反意词 请教下数据库分区 分表主要是解决什么问题出现的? 鸟不拉屎的地方是什么意思 mysql数据库分库分表哪个工具好,我整理出来了五个... 鸟不拉屎是什么意思? 小鸟飞到屋里拉屎怎么解释 小鸟飞进房间里在床上大... 为什么手机无缘无故变成繁体字了,改不过来 中国三大蚂蝗山是什么? 听说墨脱有很多蚂蝗?具体在那个地方?如果被咬了... 去墨脱过蚂蟥区的时候应该注意什么 徒步墨脱蚂蟥最怕什么 蚂蝗山是在中国那个地方 墨脱这个地方为什么蚂蟥那么多啊?听说很恐怖的啊 徒步墨脱经过蚂蟥山吗?我一个人想找老驴(大部队... 进入墨脱,有一个著名的蚂蝗沟,里面到处是蚂蝗,... 墨脱真的有那么的危险?