第二阶段面试题

char和varchar

char是定长字符串,varchar是可变长度字符串

使用char进行数据存储时,无论存储数据长度为多少,都会占用固定长度,存储和查询的速度快,但是可能会造成磁盘空间的浪费

使用varchar进行数据存储时,使用的磁盘空间会按照所占用的大小进行分配,可以节省磁盘的空间,但是可能会导致查询的速度较慢

ORACLE与MySQL的区别

内存占用

Oracle内存占用比较大,MySQL内存占用量少,Oracle是大型数据库,MySQL是中小型数据库

是否开源

Oracle需要付费使用,而MySQL的社区版是开源的

MySQL的语法简明,Oracle语法复杂

MySQL构建集群简单,Oracle构建集群较为繁琐

数据类型的区别

MySQL中使用双引号进行字符串引用,Oracle使用字符串时要使用单引号

MySQL中布尔值判断使用0和1,Oracle使用true和false

自动提交

MySQL中默认自动提交,Oracle需要手动进行提交

关系型数据库与非关系型数据库的区别

功能复杂度

关系型数据库功能多,开启事务,设置引擎,设置外键多表查询

非关系型数据库功能少

存储位置

关系型数据库的数据一般存储在磁盘中数据安全性高,非关系型数据库一般存储在内存中,数据安全性低

存储数据总量

关系型数据库存储的数据容量比较大,非关系型存储的数据容量小

读写速度

由于关系型数据库存储在磁盘中而且存储的数据多,因为读写速度慢,

非关系型数据库数量少并且存储在内存中,所以存储速度快

存储数据类型

关系型数据库存储冷数据,使用较少

非关系型数据库存储热数据,使用频繁

binlog日志的格式和特点

三种格式:statement row mixed

statement: 记录SQL命令本身,使用的内存量比较小,但是在主从复制的时候可能会因为环境发生变化而产生错误

row: 记录数据的变化,占用的内存量比较大,但是恢复数据的时候不容易产生错误

mixed:混合了两种日志格式的优点,能够是日志提供可靠且稳定的复制行为,但是由于混合了两种格式,可能会影响数据库的性能和日志复杂性以及日志管理难度

MySQL连接的方式

本地连接,使用本地的socket文件进行登录

远程连接,tcp协议通过三次握手进行登录

MySQL数据备份的方式以及区别

物理备份和逻辑备份

物理备份备份的是文件,备份速度比较慢,备份的文件大小比计较大,恢复的速度比较快,备份工具常用的为xtrabackup

逻辑备份备份的是SQL语句,备份速度快,备份的文件大小比较小,恢复的速度比较慢,备份工具mysqldump

主从复制的作用

数据热备,作为后备数据库,主数据库服务器故障后,可以切换到从数据库继续工作,避免数据的丢失和服务的停止

读写分离,降低压力,从节点可以分担数据库的读请求,使数据库性能有所提升

数据冗余,防止数据丢失,主节点发生异常时,从节点中记录的数据可以进行数据的恢复

主从复制比较慢的原因

主服务器配置与从服务器配置差距大

并发量过大导致主服务器写得慢,从服务器读得慢

网络延迟高

从服务器数量较多,使读写速度变慢

如何解决主从复制比较慢

优化网络环境,提升带宽

优化主库性能,优化索引,降低主库写入压力,提高复制效率

优化从库性能,通过并行复制,同时复制多个数据块

选择合适的复制模式,异步复制,在实时性要求不高时使用,可能导致数据不一致

半同步复制,结合同步和异步的优点,确保至少一个库接收到日志在确认主库写入,提高复制可靠性并减少延迟

主从复制模式有几种?

主从复制是一种常见的同步模式,适用于许多不同的数据库系统,如MySQL。以下是主从复制的主要模式:

一、基于日志复制的分类

  1. 异步复制

    • 定义:主节点将写操作日志发送给从节点后,不需要等待从节点的确认,而是立即处理下一个请求。从节点会尽力追赶主节点的数据更新,但可能会有一定的延迟。
    • 特点:实现简单,性能较高,系统可用性较好,但数据一致性无法得到保证,存在数据丢失的风险。
  2. 同步复制

    • 定义:主节点在发送写操作日志后,会等待从节点的确认。只有当从节点确认接收并应用日志后,主节点才会处理下一个请求。
    • 特点:数据一致性得到了最强的保证,但性能开销较大,系统的可用性可能受到影响,因为主节点需要等待从节点确认。
    • 注意:在MySQL中,强同步复制(即上述的同步复制)不是一个内置选项,但类似的行为可以通过第三方集群技术如Galera Cluster实现。
  3. 半同步复制

    • 定义:主节点在执行数据变更操作后,会等待至少一个从节点接收并记录这些变更到其中继日志(Relay Log)后,才继续执行后续操作。这里的“半同步”指的是,主节点等待的是从节点确认已接收变更,而不是确认已应用变更。
    • 特点:提高了数据的安全性,但会造成一定的延迟。性能可能略低于异步复制,特别是在网络延迟较大的情况下。如果所有从服务器都不可用,主服务器会退回到异步复制模式,以保证自身的可用性。
  4. 增强半同步复制

    • 定义:在主节点将每个事务写入binlog后,等待从节点刷新到磁盘才返回给客户端。
    • 特点:进一步减少了数据丢失的风险,但可能会增加事务的延迟。

二、基于复制内容的分类

  1. 基于语句的复制(Statement-Based Replication,SBR)

    • 定义:主服务器上执行的SQL语句(如INSERT、UPDATE、DELETE等)会被记录到Bin Log中。从服务器读取这些SQL语句并在自己上执行,以此来复制数据的变更。
    • 特点:由于只记录和复制SQL语句,所以二进制日志相对较小,在某些情况下复制效率较高。但涉及到非确定性函数(如NOW()、RAND())或是依赖于数据库状态的SQL语句时,可能会导致主从数据不一致。
  2. 基于行的复制(Row-Based Replication,RBR)

    • 定义:对数据库所做的每一行变更(INSERT、UPDATE、DELETE)都会被记录到二进制日志中。从服务器读取这些行变更记录,并应用到自己的数据库中。
    • 特点:可以精确复制每一行的变更,避免了SBR模式下的非确定性问题,保证了数据的一致性。对于大量的数据变更操作,RBR可能更有效率。但如果变更的数据行很多,二进制日志可能会变得非常大。
  3. 混合模式复制(Mixed-Based Replication,MBR)

    • 定义:结合了SBR和RBR的优点。MySQL会根据操作的类型和特点,动态选择使用SBR还是RBR。
    • 特点:对于大多数操作,它默认使用SBR,但在遇到可能导致数据不一致的情况时,会自动切换到RBR。适用于希望MySQL自动优化复制方式,或者操作类型复杂多变的场景。

三、基于架构的分类

  1. 一主一从模式

    • 定义:只有一个主服务器和一个从服务器,从服务器从主服务器复制数据。
    • 特点:模式简单直观,适用于大多数场景。
  2. 一主多从模式

    • 定义:一个主服务器和多个从服务器的组合。从服务器可以用于分担读负载,提高查询性能。
    • 特点:提高了系统的并发处理能力和查询性能。
  3. 级联复制模式

    • 定义:在主从结构中,设置一个从服务器作为其他从服务器的主服务器,形成级联结构。
    • 特点:可以扩展复制的范围和规模。
  4. 双复制模式

    • 定义:有两个主服务器,它们互相复制数据。
    • 特点:需要特殊的配置和冲突解决机制,适用于高可用性和负载均衡的需求。

综上所述,主从复制具有多种模式,每种模式都有其特点和适用场景。在实际应用中,需要根据具体的业务需求、数据操作特点以及对数据一致性的要求来选择合适的复制模式。

如何解决MySQL主节点故障问题

配置MySQL多源复制

配置MHA高可用服务

配置gelera集群

MySQL事务的特性

A原子性,事务是不可进行分割的SQL语句

C一致性,事务中的语句,要么全部执行,要么全部不执行,具有一致性

I隔离性,不同隔离等级下,各个事务之间的影响也不同,隔离等级:未提交读,提交读,可重复,串行化

D持久性,通过事务执行的SQL语句会写入内存中,长期保存

什么是脏读,幻读,不可重复读?

脏读是指一个事务读到了另一个事务改变的数据,但是另一个事务又进行了数据回滚,

幻读发生在事务对记录的删除或者插入,在查看时可能会发现数据行数多了或者少了

不可重复读,指一个事务在查看同一数据时,数据由于其他事务的执行而产生变化,从而不能读到一致的数据

MySQL主从复制比较慢的原因是什么?怎么处理?

网络延迟较大 可以通过提高网络的带宽,加快主从复制的效率

主从服务器配置差距较大 可以通过提高主从服务器的硬件配置提高主从复制效率

从服务器的数量较多,影响主从复制效率 可以适当减少从服务器数量

主从模式不合适 可以通过更换主从模式,提高主从效率

主节点接受的并发量过大,影响主从复制 扩大主节点数量,分担压力,提高主从复制效率

你在使用MySQL的过程中遇到过什么问题?如何处理的?

主从复制过程中,I/O线程显示NO

首先考虑网络连接状态

配置主从复制过程中是否使用了域名进行网络连接,再看看是否是因为没有配置域名解析,导致网络连接失败

其次考虑同步用户是否存在,以及是否具有读取binlog日志的权限

最后,可以查看主节点是否在配置中开启binlog日志的配置

SQL线程显示NO

MySQL服务版本

slave节点上进行数据的插入

MySQL支持的引擎有几种?分别有什么特点?

InnoDB: 支持事务,支持行级锁,支持外键

MyISAM:不支持事务和外键,提供表级锁,占用磁盘空间小,读取速度快

MEMORY:数据存储在内存中,访问速度极快

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

河中医第一IKUN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值