数据库水平拆分是在单库中拆出多个表,每个表是表名+规则。还是分出多个库,每个库是库名+规则,表名不变

数据库水平拆分是在单库中拆出多个表,每个表是表名+规则。还是分出多个库,每个库是库名+规则,表名不变,第1张

1 基本思想之什么是分库分表?

从字面上简单理解,就是把原本存储于一个库的数据分块存储到多个库上,把原本存储于一个表的数据分块存储到多个表上。

2 基本思想之为什么要分库分表?

数据库中的数据量不一定是可控的,在未进行分库分表的情况下,随着时间和业务的发展,库中的表会越来越多,表中的数据量也会越来越大,相应地,数据 *** 作,增删改查的开销也会越来越大;另外,由于无法进行分布式式部署,而一台服务器的资源(CPU、磁盘、内存、IO等)是有限的,最终数据库所能承载的数据量、数据处理能力都将遭遇瓶颈。

3 分库分表的实施策略。

分库分表有垂直切分和水平切分两种。

31 何谓垂直切分,即将表按照功能模块、关系密切程度划分出来,部署到不同的库上。例如,我们会建立定义数据库workDB、商品数据库payDB、用户数据库userDB、日志数据库logDB等,分别用于存储项目数据定义表、商品定义表、用户数据表、日志数据表等。

32 何谓水平切分,当一个表中的数据量过大时,我们可以把该表的数据按照某种规则,例如userID散列,进行划分,然后存储到多个结构相同的表,和不同的库上。例如,我们的userDB中的用户数据表中,每一个表的数据量都很大,就可以把userDB切分为结构相同的多个userDB:part0DB、part1DB等,再将userDB上的用户数据表userTable,切分为很多userTable:userTable0、userTable1等,然后将这些表按照一定的规则存储到多个userDB上。

33 应该使用哪一种方式来实施数据库分库分表,这要看数据库中数据量的瓶颈所在,并综合项目的业务类型进行考虑。

如果数据库是因为表太多而造成海量数据,并且项目的各项业务逻辑划分清晰、低耦合,那么规则简单明了、容易实施的垂直切分必是首选。

而如果数据库中的表并不多,但单表的数据量很大、或数据热度很高,这种情况之下就应该选择水平切分,水平切分比垂直切分要复杂一些,它将原本逻辑上属于一体的数据进行了物理分割,除了在分割时要对分割的粒度做好评估,考虑数据平均和负载平均,后期也将对项目人员及应用程序产生额外的数据管理负担。

在现实项目中,往往是这两种情况兼而有之,这就需要做出权衡,甚至既需要垂直切分,又需要水平切分。我们的游戏项目便综合使用了垂直与水平切分,我们首先对数据库进行垂直切分,然后,再针对一部分表,通常是用户数据表,进行水平切分。

按你提供的(信息不完整),可以拆分以下几张表:

1,问题表。包括以下字段:问题编号、问题、问题分数、问题类别。(如果如果你的这些问题包括许多类别,例如:单项选择、多项选择、问答题、判断题、填空题……建议将问题类别抽出来,建立一张表;如果只单项选择、多项选择,则不必)。

2,问题选项答题表。包括以下字段:问题编号(用于关联上面的问题表)、选项编号、选项内容、该项是否为标准答案。——(该表建立在问题表的“问题类别”只为单项、多项的前提下,如果非只该两个类别,此表设计就不科学了)

3、评分标准表,我不懂你最后哪个“督导”的意思无法拆分。

-------------------------------

备注:因为没看到你的整体业务,以上拆分也不过断章取义,真正还需要知道业务才能帮得上你忙,以上希望能给你一个拆分的思路。

1、首先需要sys或system权限 *** 作

2、查询需要更改表的ID

select object_id  from all_objects where owner = 'ITHOME'

and object_name = 'TEST';1234

注:ITHOME为用户,TEST是要更改的表,表名要大写

3、通过ID查出该表所有字段的顺序

select obj#, col#, name

from syscol$

where obj# = '103756' order by col#123

4、修改顺序

update syscol$ set col#=2 where obj#=103756 and name='AGE';update syscol$ set col#=3 where obj#=103756 and name='NAME';12

或直接在第三步的语句后面加 for update 进行修改

最后commit提交 并且重启Oracle服务

以上就是关于数据库水平拆分是在单库中拆出多个表,每个表是表名+规则。还是分出多个库,每个库是库名+规则,表名不变全部的内容,包括:数据库水平拆分是在单库中拆出多个表,每个表是表名+规则。还是分出多个库,每个库是库名+规则,表名不变、SQL数据表(415列)拆分表 ,如何拆分通过视图、oracle 数据库 怎么把一个表中的一个字段按规律拆分,并显示出来等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10128243.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存