数据库面试复习

Mysql数据库中常见的表相关操作

创建数据库:create database  库名;

创建表:create table  表名 (

字段名 类型 约束,

字段名 类型 约束

比如

创建job表

CREATE TABLE job

( jobid INT(11) PRIMARY KEY,

jobname VARCHAR(50) NOT NULL,

sal DECIMAL(10, 2)

);

创建user表

CREATE TABLE user

( userid INT(11) PRIMARY KEY,

username VARCHAR(50) NOT NULL,

age INT(11) NOT NULL,

gender ENUM('男', '女') NOT NULL DEFAULT '男',

jobid INT(11),

FOREIGN KEY (jobid) REFERENCES job(jobid)

);

进行表的关联查询

多表查询:子查询,

连接查询(内连接,外连接)

 

Mysql中 InnoDB支持的四种事务隔离级别名称

读未提交         Read Uncommitted(读取未提交内容)

读已提交        Read Committed(读取提交内容

可重复读        Repeatable Read(可重读)

可串行化        Serializable(可串行化)

什么是存储过程,存储过程的含义

存储过程是指由数据库sql语句组成的一个封装好的集合,经过编译,优化后存储到数据中,

存储过程通常用来执行特定的任务或功能,可以传入参数、被多个程序执行调用,在执行一系列sql语句后返回一个或者多个结果集。

存储过程的特点:

封装性:存储过程是将一系列的sql语句装配到一个单元内,因此只需调用一个存储过程就能实现一系列复杂操作。

可重用性:存储过程创建后可以被多个程序进行多次调用,提高了代码的复用性。

安全性:存储过程本身可以对其设置使用权限,外界在使用时只能获取到执行的结果而不能查看内部执行流程,保护代码安全,提高数据库访问的安全性。

性能:存储过程中包装的一些sql语句通常已经经历过编译和优化,一般执行效率较高。

 

存储过程与函数的区别

二者定义:存储过程是用户定义的一系列SQL语句的集合,而函数通常是数据库已定义的方法

存储过程可以没有返回值,函数必须有返回值

存储过程一般作为一个独立的部分来执行,而函数可以作为查询语句的一部分来调用

声明的关键字不同,存储过程是procedure,函数是function

存储过程是用户在数据库中完成某种特定的操作,而函数是用于返回特定的数据

数据库表连接的方式,区别是什么

数据库连接方式有外连接和内连接,内连接是指,将连接的表的关联字段通过查询结果显示出来,而不显示两表之间不关联的字段(没有关系)常用于查询目标表之间相同的公共字段;

 

内连接的案例:

当执行内连接时,我们可以通过指定连接条件来获取两个表之间存在匹配关系的行。以下是一个简单的内连接案例:

假设我们有两个表:employees(员工信息)和 departments(部门信息),它们之间通过 department_id 字段进行关联。

sqlCopy Code

SELECT employees.name, departments.department_name FROM employees INNER JOIN departments ON employees.department_id = departments.department_id;

在这个案例中,我们使用 INNER JOIN 来执行内连接,连接条件是 employees.department_id = departments.department_id。查询的结果将会返回符合条件的员工姓名及其所属部门名称,而不包括没有匹配部门的员工或部门。

通过内连接,我们可以获取到两个表之间存在匹配关系的数据

 

 

而外连接是连接的两个表中选择一个表作为主要查询的表(显示该表的查询的相关字段,即便没有查询到数据,也会显示相关字段,显示为null),同时只显示连接表的部分目标字段,外连接包含左外连接和右外连接。两者的区别是左外连接选择左边的表格作为主表,右外连接选择右边的表作为主表。

简单总结来说:

内连接查询是将多张表做笛卡尔积,根据条件将不符合条件的记录过滤掉,留下符合条件的


外连接查询的时候,需要指定一个基准表,基准表查询的相关数据会全部展示,不足的地方以null展示
左外连接以 左边的表 作为基准表,左边的表都显示
右外连接以右边的表作为基准表,右边的表全部显示

查询语句里的各个关键字的执行先后顺序:

先看一个例子:

-- 查询哪个岗位的平均工资超过了4000
SELECT job,AVG(sal) FROM emp GROUP BY job HAVING AVG(sal) > 4000;

having是对分组过后的数据进行条件筛选,而where是对分组之前的数据进行条件筛选

-- where 不可以使用聚合函数,having后面可以使用聚合函数

其中各个关键字的执行优先级为:

SELECT 5
FROM 1
WHERE 2
GROUP BY 3
HAVING 4
ORDER BY 6

数字越小则优先级越高

 

什么是事务

事务简单来说是指完成实现一系列操作的sql语句集合,它们被视为一个不可分割的工作单元。事务可以由一个或多个对数据库进行读写操作的 SQL 语句组成。

事务的目标是保证数据库的一致性和完整性。

 

数据库中的事务有几个特点,

原子性,一致性,隔离性,持久性

原子性:原子性是指事务的一些列操作可以看作是一个原子单元,不可拆分,要么全部执行,要么全部不执行(如转账操作,要么转账执行成功,要么转账执行失败)

一致性:事务的状态会从一个状态跳转到另一个完整的状态,而不会出现执行中这种状态。

通过保证事务的一致性特点,确保了数据库操作始终处于一个安全的执行流程,如果有某个事务执行失败了,就会对他的状态进行回滚,直接回到原先未执行的状态。

隔离性:事务之间的相关操作都是相互隔离开来的,互相不受影响。

持久性:事务一但执行成功,造成的改变会直接影响到数据库中的数据,而且执行成功后结果是不可改变的。

事务的隔离级别

mysql中InnoDB支持的四种事务隔离级别为,读已提交,读未提交,可重复度,可串行化

 

 

如何防止sql注入问题


1.使用预编译语句,将sql语句与数据分开
2.参数化查询
3.使用存储过程,存储过程是实现写好的sql语句的,可以在数据库中重复执行
4.设置输入验证,让用户输入一些数据看是否能够达到预期的格式和类型
5.对用户设置最小权限:给用户执行特定任务设置最小执行权限,比如有的东西只能看不能修改等操作,将来即便出现sql注入问题,用户也无法进行干预
 

 

什么是事务?

事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作

单位。事务和程序是两个概念。一般来说 一个程序中包含多个事务。

 

数据库事务的四大特性

原子性:一个事务可以被看作是不可再分的整体,事务不可再分。

一致性:一个事务的整体流程要么全部执行,要么全部不执行,不会存在事务执行到一半的状态,如果事务无法按照需求继续进行下去,则需进行事务回滚。

隔离性:事务与事务之间是相互隔离的,一个事务执行造成的改变不影响其他事务。

持久性:事务执行发生的变化影响是长久存在,不可变的,已经执行完成的事务造成的影响是会一直存在的。一但执行的事务造成的影响会一直存储在数据库中,及时系统崩溃或重启也不会丢失。

 

mysql中的枚举类 ENUM的用法是什么

ENUM是一个字符串对象,用于指定一组预定义的值,并在创建表时使用

 

Char和Varchar的区别

char和varchar都是字符串类型,char列长度固定为一开始声明时的长度,当存储的数据长度不足时会用空格补充,而varchar会根据存储的数据内容来动态变化长度

char的长度范围为1到255

char用于存放一些长度固定的字符串数据,比如邮政编码,电话

而varchar用以存放一些长度不固定的字符串数据,比如网站或者邮箱

 

列的字符串类型可以是什么

列的字符串类型包括:char(固定长度),varchar(不固定长度),text(文本类型),enum枚举类,BLOB二进制

 

mysql中使用什么存储引擎

存储引擎称为表类型,数据使用各种技术存储在文件中。

MySQL支持多种存储引擎,其中最常用的是InnoDB和MyISAM。以下是对这两个存储引擎的简要介绍:

  1. InnoDB:InnoDB是MySQL的默认存储引擎,它支持事务、行级锁和外键约束等高级功能。它适用于需要强调数据完整性和并发性能的应用场景。

  2. MyISAM:MyISAM是MySQL的另一个常用存储引擎,它不支持事务和行级锁,但具有较高的查询性能。它适用于读写比较少、对查询性能要求较高的场景。

除了InnoDB和MyISAM之外,MySQL还提供了其他存储引擎,如Memory(内存表)、Archive(归档表)和CSV(CSV表)等。每个存储引擎都有其特定的优势和适用场景,选择合适的存储引擎要根据具体的需求和应用场景进行评估。

需要注意的是,从MySQL 5.5版本开始,InnoDB成为了默认的存储引擎,取代了之前的MyISAM。但在特定情况下,仍然可以选择使用其他存储引擎来满足特定的需求。

 

主键和候选键有什么区别

主键和候选键都是指可以作为一张表每个数据的唯一标识的字段,一个表只能拥有一个主键,但是可以拥有多个候选键,主键也是候选键。

比如存在学生选课表,该表可能包含学生ID、课程ID、成绩等列。在这种情况下,学生ID和课程ID的组合可能是一个候选键,因为它可以唯一地标识每个学生在每门课上的成绩。如果我们将学生ID定义为主键,那么课程ID就成为了候选键。

主键与候选键一般区别:主键要求是简单,容易理解且经常使用的列;而候选键可以是复合,动态变化且使用较少的列

mysql数据库服务器 性能分析的方法命令有哪些

  1. EXPLAIN:EXPLAIN命令用于分析查询语句的执行计划,可以帮助优化查询性能。通过查看EXPLAIN的输出结果,可以了解查询是如何被执行的,包括使用的索引、连接类型等信息。

  2. SHOW STATUS:SHOW STATUS命令用于显示各种服务器状态信息,包括查询数量、连接数量、缓冲区命中率等。这些信息可以用来评估服务器的整体性能并进行调优。

  3. SHOW PROCESSLIST:SHOW PROCESSLIST命令用于显示当前活动的MySQL连接和执行的查询语句。可以通过查看当前的查询活动情况来了解数据库的负载情况,并找出可能存在的性能瓶颈。

  4. MySQL性能图表和监控工具:MySQL提供了多种性能图表和监控工具,例如MySQL Enterprise Monitor、Percona Monitoring and Management、Prometheus+Grafana等。这些工具可以提供更详细的性能指标、图表和报告,帮助识别和解决性能问题。

  5. 慢查询日志:慢查询日志是一种记录执行时间超过设定阈值的查询的日志文件。通过启用慢查询日志,可以捕获执行时间较长的查询语句,从而找到需要优化的查询,并进行性能分析。

  6. MySQL性能分析工具:MySQL提供了一些性能分析工具,如MySQL Performance Schema和Performance Reports。这些工具可以提供更详细的性能指标和报告,帮助定位性能瓶颈和优化数据库配置。

Like和REGEXP操作有什么区别

  1. LIKE操作符:LIKE操作符用于基于模式进行简单的字符串匹配。它使用通配符(例如%)来表示模式中的任意字符或字符集。比较常见的通配符是%(匹配任意多个字符)和_(匹配单个字符)。下面是一个示例:

     

    SELECT * FROM table_name WHERE column_name LIKE 'abc%';

    上述查询将返回以'abc'开头的所有值。

  2. REGEXP操作符(基于正则表达式):regexp

  3. REGEXP操作符用于基于正则表达式进行更复杂的模式匹配。它可以进行更灵活和精确的字符串匹配。正则表达式是一种用于匹配文本模式的强大工具,可以定义各种匹配规则。下面是一个示例:

    SELECT * FROM table_name WHERE column_name REGEXP '^abc[0-9]+$';

    上述查询将返回column_name列中以'abc'开头,后跟一个或多个数字的值。

总结:

  • LIKE操作符适用于简单的模式匹配,使用通配符进行模式定义。 % _
  • REGEXP操作符适用于复杂的模式匹配,使用正则表达式进行模式定义。它提供了更灵活和精确的匹配能力。

 

BLOB和TEXT有什么区别(二进制和文本类型)

blob是一个二进制对象,可以容纳可变数量的数据,有四种blob类型

TinyBLOB(极小)

BLOB(普通)

MEDIUMBLOB(中等)

LONGBLOB(大)

以上四种只在最大存储容量上有所不同

 

Text文本类型是一个不区分大小写的blob类型,有四种text类型

 

TINYTEXT

TEXT

MEDIUMTEXT 

LONGTEXT

只能在所能容纳价值的最大长度上有所不同。

BLOB 和 TEXT 类型之间的唯一区别在于对 BLOB 值进行排序和比较时区分大小 写,对 TEXT 值不区分大小写。

 

数据库三大范式是哪三个

第一范式:数据库表中的每个字段都是原子性的,即字段不可再分。这意味着一个字段中不能包含多个值或多个属性。(字段不可分割)

第二范式:数据库表中的每个非主键字段必须完全依赖于主键,而不能只依赖于部分主键。换句话说,每个非主键字段必须与整个主键相关,不能只与主键的部分字段相关。(可以依靠主键或其他关联字段查到该字段)

第三范式:不存在非主属性对关键字的传递函数依赖关系,即表中的每一个字段都只能依赖于主键,不依赖于其他键(除了依靠主键查询的到该字段,其他字段都没法查到该字段)

 

mysql表中允许有多少个触发器

允许有6个触发器

BEFORE INSERT   before insert

AFTER INSERT         after insert

BEFORE UPDATE        before update

AFTER UPDATE        after update

BEFORE DELETE        before delete

and AFTER DELETE        after delete

 

什么是通用sql函数

数据库通用函数是在不同的数据库管理系统(DBMS)中都可以使用的函数,它们具有普遍适用性,提供了一些常见的功能和操作。

以下是一些常见的SQL通用函数:

  1. 聚合函数(Aggregate Functions):
  • COUNT:计算指定列或行的记录数量。
  • SUM:计算指定列或行中数值列的总和。
  • AVG:计算指定列或行中数值列的平均值。
  • MAX:找出指定列或行中数值列的最大值。
  • MIN:找出指定列或行中数值列的最小值。
  1. 字符串函数(String Functions):
  • CONCAT:将两个或多个字符串连接在一起。
  • SUBSTRING:截取字符串的一部分。 substring
  • LENGTH:返回字符串的长度。length
  • UPPER:将字符串转换为大写。upper
  • LOWER:将字符串转换为小写。 lower
  1. 日期和时间函数(Date and Time Functions):
  • CURDATE:返回当前日期。        curdate
  • CURTIME:返回当前时间。        curtime
  • DATE_FORMAT:将日期格式化为指定的格式。     date_format
  • EXTRACT:从日期或时间中提取特定的部分,如年、月、日、小时等。
  • DATEDIFF:计算两个日期之间的差异。
  1. 数学函数(Mathematical Functions):
  • ABS:返回一个数的绝对值。
  • ROUND:将一个数四舍五入到指定的小数位数。
  • SQRT:计算一个数的平方根。
  • POWER:计算一个数的指定次幂。
  • MOD:返回两个数相除的余数。

 

Mysql中有哪几种锁

MyISAM 支持表锁,InnoDB 支持表锁和行锁,默认为行锁。

表级锁:开销小,加锁快,不会出现死锁。锁定粒度大,发生锁冲突的概率最高,并 发量最低。

行级锁:开销大,加锁慢,会出现死锁。锁力度小,发生锁冲突的概率小,并发度最 高。

 

 

Mysql数据优化如何实现

优化数据类型

避免使用 NULL,NULL 需要特殊处理, 大多数时候应该使用 NOT NULL,或者使用一个特殊的值,如 0,-1 作为默认值。

 仅可能使用更小的字段,MySQL 从磁盘读取数据后是存储到内存中 的,然后使用 cpu 周期和磁盘 I/O 读取它,这意味着越小的数据类 型占用的空间越小.

 小心字符集转换 

客户端或应用程序使用的字符集可能和表本身的字符集不一样,这需要 MySQL 在运行过程中隐含地进行转换,此外,要确定字符集如 UTF8 是否支持多字节字符,因此它们需要更多的存储空间。

_优化 count(mycol) 和 count()*

优化子查询 

遇到子查询时,MySQL 查询优化引擎并不是总是最有效的,这就是为 什么经常将子查询转换为连接查询的原因了,优化器已经能够正确处理 连接查询了,当然要注意的一点是,确保连接表 (第二个表) 的连接列 是有索引的,在第一个表上 MySQL 通常会相对于第二个表的查询子 集进行一次全表扫描,这是嵌套循环算法的一部分。

 优化 UNION (使用unionall)

 在跨多个不同的数据库时使用 UNION 是一个有趣的优化方法, UNION 从两个互不关联的表中返回数据,这就意味着不会出现重复的 行,同时也必须对数据进行排序,我们知道排序是非常耗费资源的,特 别是对大表的排序。

 UNION ALL 可以大大加快速度,如果你已经知道你的数据不会包括重 复行,或者你不在乎是否会出现重复的行,在这两种情况下使用 UNION ALL 更适合。此外,还可以在应用程序逻辑中采用某些方法避 免出现重复的行,这样 UNION ALL 和 UNION 返回的结果都是一样 的,但 UNION ALL 不会进行排序。

 

Mysql里的关键字

添加索引: alter table tableName add 索引(索引字段)

主键:primary key

唯一:unique

全局:fulltext

普通:index

多列: index index_name

页级: 引擎 BDB。次锁定相邻的一组记录。

表级: 引擎 MyISAM , 理解为锁住整个表,可以同时读,写不行。 行级: 引擎 INNODB , 单独的一行记录加锁,对指定的记录进行加锁,这样其它进程还是可以 对同一个表中的其它记录进行操作。 表级锁速度快,但冲突多,行级冲突少,但速度慢。

 

什么是存储引擎

存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数 据等技术的实现方法。

数据库存储引擎是指数据库管理系统内部的一个重要组成部分,负责处理数据的存储、检索和更新等操作。不同的数据库管理系统可能支持多种存储引擎,每种存储引擎都有自己的特点和适用场景。

常见的数据库存储引擎包括:

  1. InnoDB:这是MySQL和MariaDB中最常用的存储引擎之一,它支持事务、行级锁定和外键等特性,适合于处理大量的并发读写请求。

  2. MyISAM:也是MySQL中的一种常见存储引擎,它适合于读密集的应用场景,但不支持事务和行级锁定。

  3. PostgreSQL中的存储引擎包括了常见的B-Tree、Hash索引等。

  4. SQL Server中的存储引擎包括了常见的Heap Table、Clustered Index、Non-clustered Index等。

选择合适的存储引擎对于数据库的性能、并发能力、事务支持以及数据完整性都有着重要的影响,因此在设计和优化数据库时,需要根据具体的需求选择合适的存储引擎。

校园经历/兼职经历 校园经历/兼职经历

 

MyISAM:这种引擎是 mysql 最早提供的。这种引擎又可以分为

静态 MyISAM、动态 MyISAM 和压缩 MyISAM 三种:

静态 MyISAM:如果数据表中的各数据列的长度都是预先固定好的, 服务器将自动选择这种表类型。因为数据表中每一条记录所占用的空间 都是一样的,所以这种表存取和更新的效率非常高。当数据受损时,恢 复工作也比较容易做。

动态 MyISAM:如果数据表中出现 varchar、text 或 BLOB 字段 时,服务器将自动选择这种表类型。相对于静态 MyISAM,这种表存 储空间比较小,但由于每条记录的长度不一,所以多次修改数据后,数 据表中的数据就可能离散的存储在内存中,进而导致执行效率下降。同 时,内存中也可能会出现很多碎片。因此,这种类型的表要经常用 optimize table 命令或优化工具来进行碎片整理。

压缩 MyISAM:以上说到的两种类型的表都可以用 myisamchk 工具 压缩。这种类型的表进一步减小了占用的存储,但是这种表压缩之后不 能再被修改。另外,因为是压缩数据,所以这种表在读取的时候要先时 行解压缩

但是,不管是何种 MyISAM 表,目前它都不支持事务,行级锁和外键约束的功能。

MyISAM Merge 引擎:这种类型是 MyISAM 类型的一种变种。合并表是将 几个相同的 MyISAM 表合并为一个虚表。常应用于日志和数据仓库。

 InnoDB:InnoDB 表类型可以看作是对 MyISAM 的进一步更新产品,它提 供了事务、行级锁机制和外键约束的功能。

 memory(heap):这种类型的数据表只存在于内存中。它使用散列索引,所以 数据的存取速度非常快。因为是存在于内存中,所以这种类型常应用于临时表 中。

 archive:这种类型只支持 select 和 insert 语句,而且不支持索引。

 Desc[ribe] tablename:查看数据表的结构。

 show engines:命令可以显示当前数据库支持的存储引擎情况。

 

 

truncate delete drop 的区别是什么

drop(DDL 语句):是不可逆操作,会将表所占用空间全部释放掉;

truncate(DDL 语句):只针对于删除表的操作,在删除过程中不会激活与表有关的删 除触发器并且不会把删除记录放在日志中;当表被 truncate 后,这个表和索引会恢 复到初始大小;

delete(DML 语句):可以删除表也可以删除行,但是删除记录会被计入日志保存, 而且表空间大小不会恢复到原来;

执行速度:drop>truncate>delete。

 

 

drop不可逆操作,会将整个表所占空间全部删除释放

truncate 只针对表的删除,删除后的删除记录不会记录在日志中,被删除后,该表和索引会恢复到初始大小。

delete,既可以删除行也可以删除表,删除记录会被记录在日志中,表的大小空间不会恢复到原来。

 

Redis是什么,请简单概括一下

是一个完全开源免费的 key-value 内存数据库 2. 通常被认为是一个数据结构服务 器,主要是因为其有着丰富的数据结构 strings、map、 list、sets、 sorted sets。

  • Redis 使用最佳方式是全部数据 in-memory。
  • Redis 更多场景是作为 Memcached 的替代者来使用。
  • 当需要除 key/value 之外的更多数据类型支持时,使用 Redis 更合适。
  • 当存储的数据不能被剔除时,使用 Redis 更合适。

 

Redis(管道,哈希)

Redis 不仅仅支持简单的 k/v 类型的数据,同时还提供 list,set,zset, hash 等数据结构的存储。

Redis 支持数据的备份,即 master-slave 模式的数据备份。

Redis 支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可 以再次加载进行使用。

Redis数据库实现原理或机制

Redis 是一个 key-value 存储系统。和 Memcached 类似,但是解决了断电后数据 完全丢失的情况,而且它支持更多无化的 value 类型,除了和 string 外,还支持 lists(链表)、sets(集合)和 zsets(有序集合)几种数据类型。这些数据类型都支 持 push/pop、add/remove 及取交集并集和差集及更丰富的操作,而且这些操作都 是原子性的。

Redis 是一种基于客户端 - 服务端模型以及请求 / 响应协议的 TCP 服务。这意味 着通常情况下一个请求会遵循以下步骤:

客户端向服务端发送一个查询请求,并监听 Socket 返回,通常是以阻塞模式,等待 服务端响应。服务端处理命令,并将结果返回给客户端。

在服务端未响应时,客户端可以继续向服务端发送请求,并最终一次性读取所有服务 端的响应。

Redis 管道技术最显著的优势是提高了 Redis 服务的性能。

分区是分割数据到多个 Redis 实例的处理过程,因此每个实例只保存 key 的一个子集。

通过利用多台计算机内存的和值,允许我们构造更大的数据库。

通过多核和多台计算机,允许我们扩展计算能力;通过多台计算机和网络适配器,允 许我们扩展网络带宽。

Redis 的一些特性在分区方面表现的不是很好:

涉及多个 key 的操作通常是不被支持的。举例来说,当两个 set 映射到不同的 Redis 实例上时,你就不能对这两个 set 执行交集操作。

涉及多个 key 的 Redis 事务不能使用。

当使用分区时,数据处理较为复杂,比如你需要处理多个 rdb/aof 文件,并且从多个 实例和主机备份持久化文件。

增加或删除容量也比较复杂。Redis 集群大多数支持在运行时增加、删除节点的透明 数据平衡的能力,但是类似于客户端分区、代理等其他系统则不支持这项特性。然 而,一种叫做 presharding 的技术对此是有帮助的。

Redis 有什么用

1. 速度快:使用标准 C 写,所有数据都在内存中完成,读写速度分别达到 10 万 / 20 万。

2. 持久化:对数据的更新采用 Copy-on-write 技术,可以异步地保存到磁盘 上,主要有两种策略,一是根据时间,更新次数的快照(save 300 10 )二是 基于语句追加方式 (Append-only file,aof) 。

3. 自动操作:对不同数据类型的操作都是自动的,很安全。

4. 快速的主 -- 从复制,官方提供了一个数据,Slave 在 21 秒即完成了对 Amazon 网站 10G key set 的复制。

5. Sharding 技术: 很容易将数据分布到多个 Redis 实例中,数据库的扩展是 个永恒的话题,在关系型数据库中,主要是以添加硬件、以分区为主要技术形 式的纵向扩展解决了很多的应用场景,但随着 web2.0、移动互联网、云计算 等应用的兴起,这种扩展模式已经不太适合了,所以近年来,像采用主从配 置、数据库复制形式的,Sharding 这种技术把负载分布到多个特理节点上去 的横向扩展方式用处越来越多

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值