精华内容
下载资源
问答
  • 关系数据库场景中功能 MySQL 都能很好满足MariaDB:MySQL 分支,由开源社区维护,被看作 MySQL 替代品,在扩展功能、存储引擎上非常好改进PostgreSQL:也叫 PGSQL,类似于 Oracle 多进程框架,可以...

    一、数据库类型

    常用的关系型数据库

    Oracle:功能强大,主要缺点就是贵

    MySQL:互联网行业中最流行的数据库,免费。关系数据库场景中的功能 MySQL 都能很好的满足

    MariaDB:MySQL 的分支,由开源社区维护,被看作 MySQL 的替代品,在扩展功能、存储引擎上有非常好的改进

    PostgreSQL:也叫 PGSQL,类似于 Oracle 的多进程框架,可以支持高并发的应用场景,几乎支持所有的 SQL 标准。适合严格的企业应用场景,而 MySQL 更适合业务逻辑相对简单、数据可靠性要求较低的互联网场景。

    NoSQL数据库(非关系型数据库)

    Redis:提供了持久化能力,支持多种数据类型。适用于数据变化快且数据大小可预测的场景。

    MongoDB:基于分布式文件存储的数据库,将数据存储为一个文档,数据结构由键值对组成。比较适合表结构不明确,且数据结构可能不断变化的场景,不适合有事务和复杂查询的场景。

    HBase:建立在 HDFS,也就是 Hadoop 文件系统之上的分布式面向列的数据库。类似于谷歌的大表设计,可以提供快速随机访问海量结构化数据。在表中它由行排序,一个表有多个列族以及每一个列族可以有任意数量的列。 HBase 依赖 HDFS 可以实现海量数据的可靠存储,适用于数据量大,写多读少,不需要复杂查询的场景。

    Cassandra:高可靠的大规模分布式存储系统。支持分布式的结构化 Key-value 存储,以高可用性为主要目标。适合写多的场景,适合做一些简单查询,不适合用来做数据分析统计。

    Pika:可持久化的大容量类 Redis 存储服务, 兼容五种主要数据结构的大部分命令。使用磁盘存储,主要解决 Redis 大容量存储的成本问题。

    NewSQL数据库(新一代关系型数据库)

    TiDB:开源的分布式关系数据库,几乎完全兼容 MySQL,能够支持水平弹性扩展、ACID 事务、标准 SQL、MySQL 语法和 MySQL 协议,具有数据强一致的高可用特性。既适合在线事务处理,也适合在线分析处理。

    OceanBase:OceanBase 是蚂蚁金服的数据库,可以满足金融级的可靠性和数据一致性要求的数据库系统。比较适合事务、并且数据量比较大的情况。不过目前OB已经商业化,不再开源。

    二、数据库范式

    前关系数据库有六种范式:第一范式、第二范式、第三范式、巴斯-科德范式(BCNF)、第四范式和第五范式。范式级别越高对数据表的要求越严格。

    第一范式要求最低,只要求表中字段不可用在拆分。

    第二范式在第一范式的基础上要求每条记录由主键唯一区分,记录中所有属性都依赖于主键。

    第三范式在第二范式的基础上,要求所有属性必须直接依赖主键,不允许间接依赖。

    一般说来,数据库只需满足第三范式就可以了。

    三、数据库事务

    1. 事务的特性

    数据库事务的特性是面试时考察频率非常高的题目,共4个特性:

    原子性:事务由原子的操作序列组成,所有操作要么全部成功,要么全部失败回滚。

    一致性:事务的执行不能破坏数据库数据的完整性和一致性,一个事务在执行之前和执行之后,数据库都必须处以一致性状态。比如在做多表操作时,多个表要么都是事务后新的值,要么都是事务前的旧值。

    隔离性:多个用户并发访问数据库时,数据库为每个用户执行的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。事务的隔离级别我们稍后介绍。

    持久性:一个事务一旦提交并执行成功,那么对数据库中数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。

    2. 事务并发问题

    脏读:脏读是指在一个事务处理过程里读取了另一个未提交的事务中的数据,例如,账户 A 转帐给账户 B 人民币 500 元,B 余额增加后但事务还没有提交完成,此时如果另外的请求中获取的是 B 增加后的余额,这就发生了脏读,因为事务如果失败回滚时,B 的余额就不应该增加。

    不可重复读:不可重复读是指对于数据库中某个数据,一个事务范围内多次查询返回了不同的数据值,这是由于在多次查询之间,有其他事务修改了数据并进行了提交。

    幻读:是指一个事务中执行两次完全相同的查询时,第二次查询所返回的结果集跟第一个查询不相同。与不可重复读的区别在于,不可重复读是对同一条记录,两次读取的值不同。而幻读是记录的增加或删除,导致两次相同条件获取的结果记录数不同。

    3. 事务的四种隔离级别

    可以用于解决上述几种并发问题。下面4种隔离级别由低到高。

    级别1——读未提交:可以读取到其他事务未提交的内容,这是最低的隔离级别,这个隔离级别下,脏读、不可重复读、幻读都有可能发生。

    级别2——读已提交:只能读取到其他事务已经提交的数据。这个隔离级别可以解决脏读问题。

    级别3——可重复读:可以保证整个事务过程中,对同数据的多次读取结果是相同的。这个级别可以解决脏读和不可重复读的问题。MySQL默认的隔离级别就是可重复读。

    级别4——串行化:最高的隔离级别,所有事务操作都依次顺序执行。这个级别会导致并发度下降,性能最差。不过这个级别可以解决前面提到的所有并发问题。

    4. 事务分类

    事务共分为共分5大类:

    扁平化事务:在扁平事务中,所有的操作都在同一层次,是平时使用最多的一种事务。它的主要限制是不能提交或者回滚事务的某一部分,要么都成功,要么都回滚。

    带保存点的扁平事务:为了解决第一种事务的弊端,就有了第二种带保存点的扁平事务。它允许事务在执行过程中回滚到较早的状态,而不是全部回滚。通过在事务中插入保存点,当操作失败后,可以选择回滚到最近的保存点处。

    链事务:可以看做是第二种事务的变种。它在事务提交时,会将必要的上下文隐式传递给下一个事务,当事务失败时就可以回滚到最近的事务。不过,链事务只能回滚到最近的保存点,而带保存点的扁平化事务是可以回滚到任意的保存点。

    嵌套事务:由顶层事务和子事务构成,类似于树的结构。一般顶层事务负责逻辑管理,子事务负责具体的工作,子事务可以提交,但真正提交要等到父事务提交,如果上层事务回滚,那么所有的子事务都会回滚。

    分布式事务:是指分布式环境中的扁平化事务。一般有四种分布式事务的方案

    XA协议:是保证强一致性的刚性事务。实现方式有两段式提交和三段式提交。两段式提交需要有一个事务协调者来保证所有的事务参与者都完成了第一阶段的准备工作。如果协调者收到所有参与者都准备好的消息,就会通知所有的事务执行第二阶段提交。一般场景下两段式提交已经能够很好得解决分布式事务了,然而两阶段在即使只有一个进程发生故障时,也会导致整个系统存在较长时间的阻塞。三段式提交通过增加Pre-commit阶段来减少前面提到的系统阻塞的时间。三段式提交很少在实际中使用,简单了解就可以了。

    TCC:是满足最终一致性的柔性事务方案。TCC采用补偿机制,核心思想是对每个操作,都要注册对应的确认和补偿操作。它分为三个阶段:Try阶段主要对业务系统进行检测及资源预留;Confirm阶段对业务系统做确认提交。Cancel阶段是在业务执行错误,执行回滚,释放预留的资源。

    消息事务:第三种方案是消息一致性方案。基本思路是将本地操作和发送消息放在一个事务中,保证本地操作和消息发送要么都成功要么都失败。下游应用订阅消息,收到消息后执行对应操作。

    GTS/Fescar:阿里云中的全局事务服务GTS,对应的开源版本是Fescar。Fescar基于两段式提交进行改良,剥离了分布式事务方案对数据库在协议支持上的要求。使用Fescar的前提是分支事务中涉及的资源,必须是支持ACID事务的关系型数据库。分支的提交和回滚机制,都依赖于本地事务来保障。 Fescar的实现目前还存在一些局限,比如事务隔离级别最高支持到读已提交级别。

    MySQL 数据库知识点

    1. MySQL 的数据类型

    2. 常用的 SQL 语句

    3. MySQL 主要的存储引擎

    MyISAM——MySQL 官方提供的存储引擎,其特点是支持全文索引,查询效率比较高,缺点是不支持事务、使用表级锁。

    InnoDB ——MySQL 在5.5版本后将 InnoDB 作为默认存储引擎,特点是支持 ACID 事务、支持外键、支持行级锁提高了并发效率。

    TokuDB ——第三方开发的开源存储引擎,有非常快的写速度,支持数据的压缩存储、可以在线添加索引而不影响读写操作,但是因为压缩的原因,TokuDB 非常适合访问频率不高的数据或历史数据归档,不适合大量读取的场景。

    4. MySQL 中的锁

    MyIASAM使用表级锁,InnoDB使用行级锁。

    表锁开销小,加锁快,不会出现死锁;但是锁的粒度大,发生锁冲突的概率高,并发访问效率比较低。

    行级锁开销大,加锁慢,有可能会出现死锁,不过因为锁定粒度最小,发生锁冲突的概率低,并发访问效率比较高。

    共享锁也就是读锁,其他事务可以读,但不能写。MySQL可以通过Lock In Share Mode语句显示使用共享锁。

    排他锁就是写锁,其他事务不能读取,也不能写。对于Update、Delete和INSERT语句,InnoDB会自动给涉及的数据集加排他锁,或者使用select for update显示使用排他锁。

    5. 索引

    6. MySQL 的存储过程与函数

    存储过程和函数都可以避免开发人员重复编写相同的 SQL 语句,并且存储过程和函数都是在 MySQL 服务器中执行的,可以减少客户端和服务器端的数据传输。

    存储过程能够实现更复杂的功能,而函数一般用来实现针对性比较强的功能,例如特殊策略求和等。存储过程可以执行包括修改表等一系列数据库操作,而用户定义函数不能用于执行修改全局数据库状态的操作。

    存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用。SQL语句中不能使用存储过程,但可以使用函数。

    不过存储过程一般与数据库实现绑定,使用存储过程会降低程序的可移植性,应谨慎使用。

    7. MySQL 的其他特性

    MySQL8.0有一些新特性

    默认字符集格式改为了 UTF8;

    增加了隐藏索引的功能,隐藏后的索引不会被查询优化器使用,可以使用这个特性用于性能调试;

    支持了通用表表达式,使复杂查询中的嵌入表语句更加清晰;

    新增了窗口函数的概念,它可以用来实现新的查询方式。窗口函数与 SUM、COUNT等集合函数类似,但不会将多行查询结果合并,而是将结果放在多行中。即窗口函数不需要GROUP BY。

    8. MySQL 调优

    一般MySQL调优有4个纬度:

    针对数据库设计、表结构设计以及索引设置纬度进行的优化;

    对业务中使用的 SQL 语句进行优化,例如调整 Where 查询条件;

    对 MySQL 服务的配置进行优化,例如对链接数的管理,对索引缓存、查询缓存、排序缓存等各种缓存大小进行优化;

    对硬件设备和操作系统设置进行优化,例如调整操作系统参数、禁用 Swap、增加内存、升级固态硬盘等等。

    这四个纬度从优化的成本角度来讲,从上到下优化成本逐渐升高;从优化效果角度来看,从下到上优化的效果更高。

    对于研发人员来说,前两个纬度与业务息息相关,因此需要重点掌握,后两个纬度更适合 DBA,简单了解就好。

    表结构和索引的优化原则

    第1个原则:要在设计表结构时,考虑数据库的水平与垂直扩展能力,提前规划好未来1年的数据量、读写量的增长,规划好分库分表方案。比如设计用户信息表,预计1年后用户数据10亿条,写QPS约5000,读QPS30000,可以设计按UID纬度进行散列,分为4个库每个库32张表,单表数据量控制在KW级别;

    第2个原则:要为字段选择合适的数据类型,在保留扩展能力的前提下,优先选用较小的数据结构。例如保存年龄的字段,要使用TINYINT而不要使用INT;

    第3个原则:可以将字段多的表分解成多个表,必要时增加中间表进行关联。假如一张表有4、50个字段显然不是一个好的设计;

    第4个原则:是设计关系数据库时需要满足第三范式,但为了满足第三范式,我们可能会拆分出多张表。而在进行查询时需要对多张表进行关联查询,有时为了提高查询效率,会降低范式的要求,在表中保存一定的冗余信息,也叫做反范式。但要注意反范式一定要适度;

    第5个原则:要擅用索引,比如为经常作为查询条件的字段创建索引、创建联合索引时要根据最左原则考虑索引的复用能力,不要重复创建索引;要为保证数据不能重复的字段创建唯一索引等等。不过要注意索引对插入、更新等写操作是有代价的,不要滥用索引。比如像性别这样唯一很差的字段就不适合建立索引;

    第6个原则:列字段尽量设置为Not Null,MySQL难以对使用Null的列进行查询优化,允许Null会使索引、索引统计和值更加复杂。允许Null值的列需要更多的存储空间,还需要MySQL内部进行特殊处理。

    SQL 语句优化原则

    第1个原则:要找的最需要优化的SQL语句。要么是使用最频繁的语句,要么是优化后提高最明显的语句,可以通过查询MySQL的慢查询日志来发现需要进行优化的SQL语句;

    第2个原则:要学会利用MySQL提供的分析工具。例如使用Explain来分析语句的执行计划,看看是否使用了索引,使用了哪个索引,扫描了多少记录,是否使用文件排序等等。或者利用Profile命令来分析某个语句执行过程中各个分步的耗时;

    第3个原则:要注意使用查询语句是要避免使用Select *,而是应该指定具体需要获取的字段。原因一是可以避免查询出不需要使用的字段,二是可以避免查询列字段的元信息;

    第4个原则:是尽量使用Prepared Statements,一个是性能更好,另一个是可以防止SQL注入;

    第5个原则:是尽量使用索引扫描来进行排序,也就是尽量在有索引的字段上进行排序操作。面试考

    总结

    敲黑板

    1.必须了解数据库的基本原理、使用场景以及常用队列、数据库的特点。MySQL提供了多种引擎可以支持事务型与非事务型的关系对象库服务等等。

    2.要深刻理解数据库事务的ACID特性,了解并发事务可能导致的并发问题和不同的数据库隔离级别如何解决这些并发问题。

    3.要掌握常用的MySQL语句,比如WHERE条件查询语句、JOIN关联语句、ORDER BY排序语句等等。还要熟悉常用的自带函数,例如SUM、COUNT等等。

    4.要了解MySQL数据库不同引擎的特点及不同类型的索引实现。比如最长使用的InnoDB非常擅长事务处理,MyISAM比较适合非事务的简单查询场景。比如知道MySQL的唯一索引、联合索引、全文索引等不同索引类型,以及最长使用等B+树索引实现等等。

    面试加分项

    加分项

    1.要了解新特性,例如MySQL8.0中提供了窗口函数来支持新的查询方式;支持通用表表达式,使复杂查询中的嵌入表语句更加清晰等等。

    2.要知道数据库表设计原则,如果有过线上业务数据库的设计经验就更好了,你能够知道如何对容量进行评估,也知道适当分库分表来保证未来服务的可扩展性,这会对面试起到积极的影响。

    3.最好有过数据库调优经验,例如明明建立了索引的语句,但是查询效率还是很慢,通过Explain分析发现表中有多个索引,MySQL的优化器选用了错误的索引,导致查询效率偏低,然后通过在SQL语句中使用Use Index来指定索引解决。

    展开全文
  • 狭义地说,分布式数据库,专指无共享,分布式关系数据库。更准确地,即支持SQL,分布式事务,统一接口分布式的数据库。本人更倾向于狭义定义,以下讨论主要是这类系统。其代表比如,OceanBase,...

    看到很多大佬关注了这个问题,小弟来先来抛砖引玉……

    先说一下什么是分布式数据库。广义地看,分布式的存储系统都可以称为分布式数据库。狭义地说,分布式数据库,专指无共享的,分布式的,关系型数据库。更准确地,即支持SQL,分布式事务,有统一接口的分布式的数据库。本人更倾向于狭义的定义,以下讨论的也主要是这类系统。其代表比如,OceanBase,TiDB,Spanner这些系统。其它的,比如像一些Sharding中间件,SQL On Hadoop系统,流处理系统,共享存储的关系型数据库,不算(狭义的)分布式数据库。

    分布式数据库在数据库历史的早期就有了,代表例子是System R*。分布式事务的概念也研究的很早。但分布式数据库直到最近几年才被关注,其原因是多方面的。一是早期数据规模不够大,单机数据库就能搞定;二是长期以来,市面上也没有较好的分布式数据库;第三是分布式数据库本身不可避免的一些缺陷。在以前人们的印象中,数据库是不讲扩展的。2000年以后,伴随着互联网行业不断增长的数据规模,NoSQL运动发展起来了。NoSQL牺牲了关系型数据库的一些限制,为数据存储带来的扩展性。这使得数据库社区开始重新思考传统关系型数据库,之后催生了NewSQL。NewSQL定义了一种新型的数据库,兼具扩展性与传统关系型数据库的特性。

    分布式数据库的优点显尔易见,主要优势有:扩展性,分布式数据库把数据分散存储到多个节点上,以实现水平扩展。当前的许多NewSQL都能自动的扩容,这相对于传统方式(MySQL分表分库)来说拥有很大的优势。

    效率,把数据分到多个节点上,多个节点可以并行地执行,提高了整体的吞吐。

    分布式数据库的缺点也很明显:分布式事务的代价较高。这种代价主要来源于:两阶段的提交造成过多的消息传输;可能的锁争用变大;复制多副本和高可用。在应用开发者抛弃交互式事务(接受使用存储过程)之前,分布式事务在未来将还是个很难消除的瓶颈

    管理复杂,相比单机的数据库,分布式数据库会有更多的节点和组件,更难于管理。幸运的是,现在主流的分布式数据库多数使用共识协议实现自动容错,许多时候不需要用户介入。

    随着摩尔定律的失效,以前靠升级硬件实现Scale Up的方式已经不行了。让数据库Scale Out变成新的考虑目标。分布式数据库在以后将会有更大的应用空间。对于当下,一般的共识是,数据量不上一定规模,不要用分布式数据库,因为很可能获得不到什么明显的优势。

    展开全文
  • 数据库技术发展至今,主要有三种数据模型:层次数据模型、网状数据模型、关系数据模型。这三种模型是按其数据结构而命名。层次模型它将数据组织成一对多关系的结构,层次结构采用关键字来访问其中每一层次每一...

    c27f82391e37f7d5c8dc03724563fd9a.png

    数据库技术发展至今,主要有三种数据模型:层次数据模型、网状数据模型、关系数据模型。这三种模型是按其数据结构而命名的。

    层次模型

    它将数据组织成一对多关系的结构,层次结构采用关键字来访问其中每一层次的每一部分。优点是存取方便且速度快;结构清晰,容易理解;数据修改和数据库扩展容易实现;检索关键属性十分方便。缺点是结构呆板,缺乏灵活性;同一属性数据要存储多次,数据冗余大(如公共边);不适合于拓扑空间数据的组织。

    网状模型

    它用连接指令或指针来确定数据间的显式连接关系,是具有多对多类型的数据组织方式。优点是能明确而方便地表示数据间的复杂关系;数据冗余小。缺点在于网状结构的复杂,增加了用户查询和定位的困难;需要存储数据间联系的指针,使得数据量增大;数据的修改不方便(指针必须修改)。

    关系模型

    它以记录组或数据表的形式组织数据,以便于利用各种地理实体与属性之间的关系进行存储和变换,不分层也无指针,是建立空间数据和属性数据之间关系的一种非常有效的数据组织方法。优点在于结构特别灵活,概念单一,满足所有布尔逻辑运算和数学运算规则形成的查询要求;能搜索、组合和比较不同类型的数据;增加和删除数据非常方便;具有更高的数据独立性、更好的安全保密性。缺点是数据库大时,查找满足特定关系的数据费时;对空间关系无法满足。

    展开全文
  • 5、索引有哪些缺点?6、索引分类7、创建索引规则8、SQL语句主要分为哪几类?9、六种关联查询10、为什么要优化? 1、什么是SQL 结构化查询语言 作用:用于存取数据,查询、更新和管理关系数据库系统 2、数据库...

    1、什么是SQL

    结构化查询语言 作用:用于存取数据,查询、更新和管理关系型数据库系统

    2、数据库三大范式

    • 第一范式:每个列 都不可以再拆分
    • 第二范式:在第一范式的基础上,非主键完全依赖于主键,而不能依赖于主键的一部分
    • 第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键

    3、MyISAM和InnoDB的区别?

    • MyISAM:拥有较高的插入,查询速度快,但不支持事务
    • InnoDB:5.5版本后MySQL的默认数据库,事务型数据库的首选引擎,支持ACID事务,支持行级锁定

    4、什么是索引?

    • 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。
    • 索引是一种数据结构。数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。

    5、索引有哪些优缺点?

    优点

    • 可以大大加快数据的检索速度
    • 通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能

    缺点

    • 时间方面:创建索引和维护索引要耗费时间,具体地,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,会降低增/改/删的执行效率;
    • 空间方面:索引需要占物理空间。

    6、索引分类

    • 唯一索引:数据列不允许重复,允许为null值,一个表允许多个列创建唯一索引
    • 普通索引:基本的索引类型,没有唯一性的限制,允许为null值
    • 主键索引:数据列不允许重复,不允许为null值,一个表只能有一个主键
    • 全文索引

    7、创建索引的规则

    • 最左前缀匹配原则,组合索引非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。
    • 较频繁作为查询条件的字段才去创建索引
    • 更新频繁字段不适合创建索引
    • 若是不能有效区分数据的列不适合做索引列(如性别,男女未知,最多也就三种,区分度实在太低)
    • 尽量的扩展索引,不要新建索引。比如表中已经有a的索引,现在要加(a,b)的索引,那么只需要修改原来的索引即可。
    • 定义有外键的数据列一定要建立索引。
    • 对于那些查询中很少涉及的列,重复值比较多的列不要建立索引。
    • 对于定义为text、image和bit的数据类型的列不要建立索引。

    8、SQL语句主要分为哪几类?

    • 数据定义语言DDL(Data Ddefinition Language)CREATE,DROP,ALTER
      主要为以上操作 即对逻辑结构等有操作的,其中包括表结构,视图和索引。
    • 数据查询语言DQL(Data Query Language)SELECT
      这个较为好理解 即查询操作,以select关键字。各种简单查询,连接查询等 都属于DQL。
    • 数据操纵语言DML(Data Manipulation Language)INSERT,UPDATE,DELETE
      主要为以上操作 即对数据进行操作的,对应上面所说的查询操作 DQL与DML共同构建了多数初级程序员常用的增删改查操作。而查询是较为特殊的一种 被划分到DQL中。
    • 数据控制功能DCL(Data Control Language)GRANT,REVOKE,COMMIT,ROLLBACK

    9、六种关联查询

    • 交叉连接(CROSS JOIN)
    • 内连接(INNER JOIN)
    • 外连接(LEFT JOIN/RIGHT JOIN)
    • 联合查询(UNION与UNION ALL)
    • 全连接(FULL JOIN)

    10、为什么要优化?

    • 系统的吞吐量瓶颈往往出现在数据库的访问速度上
    • 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢
    • 数据是存放在磁盘上的,读写速度无法和内存相比
    • 优化原则:减少系统瓶颈,减少资源占用,增加系统的反应速度。

    11、如何进行优化?

    • 表的设计合理化(符合3NF)
    • 添加适当索引
    • SQL语句优化
    • 分表技术(水平分割分表,垂直分割分库)
    • 读写分离
    • 存储过程(模块化编程,可以提高速度)
    • 对mysql配置优化
    • 定时的去除不需要的数据,定时进行碎片整理(MyISAM)

    12、读写分离?

    基本原理是让主数据库处理事务性增改善操作,而从数据库处理查询操作

    13、为什么要读写分离?

    数据库的写操作比较耗时,而读操作很快,所以读写分离解决的是数据库的写入,影响了查询的效率

    展开全文
  • 分布式数据库试题及答案.doc

    热门讨论 2010-12-29 16:46:29
    5.2. 下面是某个公司一个人事关系数据库的全局模式: EMP={ENO*,ENAME,POSITION,PHONE} PAY={POSITION*,SALARY} ENO为职员号,POSITION为岗位。SALARY表示岗位对应的工资,*对应的属性表示主关键字。该公司分布在两...
  • 2.3 关系数据库的生命周期 17 2.3.1 需求收集和分析 17 2.3.2 逻辑数据库设计 18 2.3.3 物理数据库设计 25 2.3.4 实现物理设计 27 2.4 反向设计数据库 28 2.5 对象—关系和对象数据库 28 2.5.1 关系...
  • 数据库管理系统的主要功能有哪些? 答: ( l )数据库定义功能; ( 2 )数据存取功能; ( 3 )数据库运行管理; ( 4 )数据库的建立和维护功能。 7 .试述数据模型的概念、数据模型的作用和数据模型的三个要素。...
  • DBA最重要素质有哪些 11 DBA职业生涯之误删除篇 12 DBA警世录——有些习惯DBA需要养成 13 RAC环境下故障处理一则 14 SQL_TRACE跟踪与诊断 16 临时表空间组导致递归SQL高度解析案例 19 使用闪回查询恢复误...
  • 在Oracle公司,Kyte专门负责Oracle数据库,他的任务是帮助使用Oracle数据库的客户,并与他们共同设计和构建系统,或者对系统进行重构和调优。在进入Oracle公司之前,Kyte是一名系统集成人员,主要为美国军方和政府...
  • 主要实现模型对象到关系数据库数据映射. 比如下图:把数据库表中每条记录映射为一个模型对象,使用模型对象实现对数据增删改查     ORM图解  ORM缺点有哪些? 优...
  • 可以从几个方面做答:行列存储都有哪些数据库,概念以及优缺点。02核心问题回答1、传统的关系数据库,如 Oracle、DB2、MySQL、SQL SERVER 等采用行式存储法(Row-based),在基于行式存储的数据库中,数据是按照行...
  • 前言 数据库知识作为面试必考题,在面试过程中占比很好,尤其是后端开发,一定要精通,尤其是索引和事务,每个专业面试官都会问,一定不能只停留在增删查改上。...Mysql 有哪些隔离级别 Mysql 什么情
  • 常见面试题

    2013-07-30 12:13:44
    PHP和JSP开发比较,有哪些缺点?对大数据怎么处理?对大型网站架构是否有了解?数据库优化时主要考虑哪些因素? 如何优化首次加载数据表慢问题,有哪些可能影响因素? 多线程和多进程比较? Ngnix和...
  • 22、面向对象特征有哪些方面 15 23、java中实现多态机制是什么? 17 24、abstract class和interface有什么区别? 17 25、abstractmethod是否可同时是static,是否可同时是native,是否可同时是synchronized? 18 ...
  • 本次实验目的主要是搭建Redis Cluster和TwemProxy Redis两种集群,分别对其进行性能测试,测试出集群性能拐点,找出性能瓶颈有哪些,并对两套集群进行比较,以便于在不同业务场景下择优选择。
  • 1.2.6 一颗现代处理器,每秒大概可以执行多少条简单MOV指令,有哪些主要的影响因素 1.2.7 请分析 MaxCompute 产品与分布式技术的关系、当前大数据计算平台类产品市场现状和发展趋势 1.2.8 对大数据平台中...
  • 精粹>---sadalage/fowler

    2015-01-24 19:44:03
    主要讲了nosql各个框架缺点,特别与RDBMS做了比较,简略说明了哪些东西适合哪个框架以及nosqlACID问题 第一章 关系数据库确实提供了很多好机制,在持久化和控制并发以及事务上很好处理但是从根本角度,...
  • 2.3.9 关系数据库的体系结构小结 35 2.4 MySQL数据库系统 35 2.4.1 MySQL系统体系结构 36 2.4.2 SQL接口 37 2.4.3 解析器 38 2.4.4 查询优化器 39 2.4.5 查询的执行 40 2.4.6 查询缓存 40 2.4.7 ...
  • 介绍MySQL是在开发过程...数字字符日期枚举引擎MySQL官方引擎主要有两个:MyISAM和InnoDB。MyISAM最大特点是支持全文索引、查询效率较高。缺点是不支持事物、表级锁。InnoDB是MySQL5.5之后MySQL默认引擎。特点是...
  •  82输入数据校验的主要方法有哪些? P141  83通过校验位可以发现代码哪些错误? P142  第八章 系统实施  84简述系统实施阶段重要性及主要活动?P156  85系统实施应作好哪些准备工作?P156  86试述...
  • 目前大部分(70%)数据都是基于关系数据库进行存储关系数据库在操作上,需要实时高速数据读取和存储,一般数据库都采用“块”(Block)方式进行数据传输,这样NAS就无法进行数据应用主流:数据库...
  • 2、缓存淘汰策略你知道有哪些3、解释下什么是进程、线程、协程;他么之间的关系是怎样?4、协程对于多线程有什么优缺点?5、缓存击穿,缓存穿透,缓存雪崩区别?6、什么是浏览器同源策略7、说下分布式缓存和本地...
  • sql总结.doc

    2019-08-27 22:08:51
    索引的缺点:1.建立索引会产生占据一定的空间。2.对表中的数据进行增、删、改的时候,索引也要动态的维护,这就降低了整数的维护速度。 (7)索引的建立原则 1.主外键 2.经常被查询的列 3.用于连接的字段 4.排序分组...
  • 11、struts.xml中resulttype有哪些类型? 91 12、什么时候用JDBC什么时候用Hibernete; 91 13、hibernate 数据三个状态 91 14、Hibernate中load和get区别? 92 15、Hibernate工作原理? 92 16、hibernate优...
  • CruiseYoung提供的带详细书签...这个数量还仅仅是Oracle数据库的数量,还需要加上等量的MySQL数据库,而团队平均DBA数量只有两三个人。  企业数据量的激增两个结果出现,首先是数据库管理员作为一个专业职位开始...

空空如也

空空如也

1 2 3 4 5
收藏数 97
精华内容 38
关键字:

关系数据库的缺点主要有哪些