关于运维·关于数据库面试题

目录

一、数据库类型

二、数据库引擎

三、mysql数据库类型

四、mysql的约束添加

五、主从复制原理

六、主从方式有几种

七、mysql主从数据不一致的原因

八、mysql的优化

九、什么是事务的特征

十、数据库读写分离的好处

十一、怎样优化sql语句

十二、mysql的同步方式

十三、mysql的数据备份有几种

希望能够帮助到大家!


引言:明人不说暗话,今天分享几个关于运维·关于数据库的面试题

一、数据库类型

Redis 是非关系型数据库存储格式灵活,可以是key-value(一种以 键值  存储数据的数据库 )的形式,也可以是文本文档图片等形式,读写速度快,可以使用磁盘或者其他储存器作为载体,具有高扩展性,但是不支持事务也不支持sql语句。

Mysql是关系型数据库支持事务,支持sql语句,支持行锁定,可以复杂查询,使用固定表结构,读写速度慢,因为使用的固定表结构导致存储方式不够灵活,对于高并发的读取请求,磁盘性能是很大的瓶颈。

二、数据库引擎

innodb:支持事务,不支持行锁定;

myisam:有较高的查询能力,不支持事务;

memory:需要很快的读写速度但对安全性要求不高的情况下可以使用,对表的大小有要求,支持锁表不支持所锁行。

三、mysql数据库类型

整数型;

浮点型;

文本文字类型;

日期时间类型;

枚举型;

集合型。

四、mysql的约束添加

主键PRIMARY KEY (PK):用于唯一的标识表行的数据,定义逐渐约束后,此列不能被重复

自增(AUTO_INCREMENT)标识该字段的值自动增长

空值null:此列不能为空

default:默认约束,即使没有插入数据,也会有默认值

unique:唯一约束,该列不允许被复制

五、主从复制原理

主库开启binlog日志,授权用户密码

从库开启两个线程io线程和sql线程io线程会像主库binlog日志文件发起读取请求,读取成功后记录在从库的Realy-log(中继日志文件)当中,sql线程读取Realy-log(中继日志)后如果发现有更新立即把更新的内容在本机的数据库上面执行一遍。

六、主从方式有几种

两种做法:

binlog日志方式:从节点需要手动指定binlog日志的名称、位置或时间

gtid方式:从节点不需要手动指定binlog日志的名称、位置或时间;会自动锁定

七、mysql主从数据不一致的原因

网络延迟,主从复制是基于binlog的异步复制,通过网络传送binlog文件,网络延迟是大多数引起数据不一致的原因

主从机器的负载不一致:mysql主从复制是主库开启dump线程,从库开启io和sql线程。当任何一台服务器负载过高,导致其中一个线程资源不足,会出现主从不一致的情况

版本不一致

max_allowed_packet(一次传送数据包的过程中最大允许的数据包大小)设置不一致:主库设置的max_allowed_packet设置的比从库大,一条大的sql语句在主库能执行完毕,但在从库上无法执行,导致主从不一致。

解决方法:

1、stop slave set global sql_slave_skip_counter=1 跳过这一步错误;

2、重新做主从:先锁表,导入数据数据+同步,重新做主从

八、mysql的优化

安全方面:修改默认端口号,禁止root用户远程登录,对用户降权,以普通用户运行mysql

性能方面:升级硬件,内存、磁盘、优化sql语句(开启慢查询)、设置索引

参数优化:innodb的buffer参数调大,连接数调大、缓存的参数优化

架构方面:读写分离,一主多从,高可用

九、什么是事务的特征

原子性:指事务是不可拆分的最小单元

隔离性:数据库允许多个事务同时对数据库的数据进行读写和修改的能力,隔离性为了防止多个事务并发执行由于交叉执行导致的数据不一致。隔离级别分为读未提交、读提交、可重复读、串行化。隔离等级越高,数据越安全,但是消耗的资源就越多。

一致性:事务中的sql语句,要么全部成功,要么全部失败。

持久性:事务结束后,对数据的修改是永久写入到磁盘的,即使系统故障也不会丢失

十、数据库读写分离的好处

分摊服务器的压力,

提高系统的处理效率。

主要分担主服务器的读取压力,间接提高了主库的写入性能,读请求全部发给了从库。

十一、怎样优化sql语句

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。

2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描

3. 任何地方都不要使用 select * from t ,用具体的字段列表代替“*”,不要返回用不到的任何字段。

4.避免频繁创建和删除临时表,以减少系统表资源的消耗。

十二、mysql的同步方式

「异步复制」:MySQL 默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给客户端,并不关心从库是否已经接收并处理。这样就会有一个问题,一旦主库宕机,此时主库上已经提交的事务可能因为网络原因并没有传到从库上,如果此时执行故障转移,强行将从提升为主,可能导致新主上的数据不完整

「全同步复制」:指当主库执行完一个事务,并且所有的从库都执行了该事务,主库才提交事务并返回结果给客户端。因为需要等待所有从库执行完该事务才能返回,所以全同步复制的性能必然会收到严重的影响。

「半同步复制」:是介于全同步复制与全异步复制之间的一种,主库只需要等待至少一个从库接收到并写到 Relay Log 文件即可,主库不需要等待所有从库给主库返回 ACK。主库收到这个 ACK 以后,才能给客户端返回 “事务完成” 的确认。

十三、mysql的数据备份有几种

逻辑备份:mysqldump,备份sql语句,速度慢,恢复也慢,需要一条一条执行sql语句

物理备份:xtrabackup备份,备份速度慢,文件大,恢复速度快

物理备份又分为3种备份方式:

完全备份:备份当前的所有数据

增量备份:备份上一次备份到当前时间点的更新的所有数据(上一次备份可以是全备也可以是增量备份),数据占用磁盘空间小,但恢复过程较复杂

差异备份:备份上一次完全备份到当前时间点的所有数据,占用磁盘空间比较大,恢复过程简单

希望能够帮助到大家!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/619287.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二Dockerfile实战

Dockerfile实战 实战1&#xff1a;使用Dockerfile修改Nginx首页 创建一个Dockerfile&#xff0c;内容如下&#xff1a; FROM nginx RUN echo <h1>Spring Cloud与Docker微服务实战</h1> > /usr/share/nginx/html/index.html实战2&#xff1a;使用Dockerfile在…

谷粒商城-商品服务-品牌管理-阿里云云存储+JSR303数字校验+统一异常处理

阿里云云存储OSS 分布式系统上传文件 分布式系统上传文件 单体应用上传&#xff1a;上传文件到服务器&#xff0c;想获取文件时再向服务器发请求获取文件。 分布式系统上传&#xff1a; 因为有多台服务器&#xff0c;为防止负载均衡导致获取文件时没找到对应的服务器&#xf…

实用编程调试技巧

目录 一、调试的基本步骤 二、Debug和Release的介绍 三、Windows环境调试介绍 1.调试环境的准备 2.学会快捷键 最常用的几个快捷键&#xff1a; 断点应用举例&#xff1a; 3.调试的时候查看程序当前信息 &#xff08;1&#xff09…

GitHub注册新账号的操作流程(详细)

目录 第一步 进入官网&#xff0c;点击右上角的"Sign up" 第二步 输入email地址 第三步 设置密码 第四步 输入昵称 第五步 根据个人喜好决定要不要接收GitHub的邮件推送。然后回答他们的验证问题 第六步 输入验证码 我在注册github账号时遇到过一些阻碍&#x…

软件测试|教你使用Python绘制正多边形

简介 绘制正多边形是Python图形编程的基本任务之一。在本文中&#xff0c;我将为你提供一个使用Python绘制正多边形的详细教程&#xff0c;并提供一个示例代码。我们将使用Python的Turtle库来进行绘制。 步骤1&#xff1a;导入Turtle库 我们需要先安装好Python环境&#xff…

Shiro框架:Shiro内置过滤器源码解析

目录 1. 常见项目中过滤器配置 2.Url访问控制配置解析为内置过滤器 2.1 DefaultFilterChainManager构造并注册内置过滤器 2.2 构造过滤器链 3. Shiro内置过滤器解析 3.1 内置过滤器概览 3.2 公共继承类解析 3.2.1 顶层Filter接口 3.2.2 AbstractFilter 3.2.3 Nameab…

二十几种未授权访问漏洞合集

未授权访问漏洞是一个在企业内部非常常见的问题&#xff0c;这种问题通常都是由于安全配置不当、认证页面存在缺陷&#xff0c;或者压根就没有认证导致的。当某企业对外的服务端口、功能无限制开放&#xff0c;并且对用户的访问没有做任何限制的时候&#xff0c;可能会泄露出某…

PLC数组队列搜索FC(SCL代码+梯形图程序)

根据输入数据搜索输入数据队列中和输入数据相同的数,函数返回其所在队列的位置。这里我们需要用到博途PLC的数组指针功能,有关数组指针的详细使用方法,可以参考下面文章: 博途PLC数组指针: https://rxxw-control.blog.csdn.net/article/details/134761364 区间搜索FC …

常用计算电磁学算法特性与电磁软件分析

常用计算电磁学算法特性与电磁软件分析 参考网站&#xff1a; 计算电磁学三大数值算法FDTD、FEM、MOM ADS、HFSS、CST 优缺点和应用范围详细教程 ## 基于时域有限差分法的FDTD的计算电磁学算法&#xff08;含Matlab代码&#xff09;-框架介绍 参考书籍&#xff1a;The finite…

【python】06.函数和模块的使用

函数和模块的使用 在讲解本章节的内容之前&#xff0c;我们先来研究一道数学题&#xff0c;请说出下面的方程有多少组正整数解。 事实上&#xff0c;上面的问题等同于将8个苹果分成四组每组至少一个苹果有多少种方案。想到这一点问题的答案就呼之欲出了。 可以用Python的程序来…

Spring Boot 整合支付宝实现在线支付方案(沙箱环境)

文章目录 1.理解沙箱环境2.沙箱环境接入准备2.1 访问开发者控制台2.2 获取重要信息2.3 处理秘钥 3.接入支付宝支付的流程4.实现支付4.1 添加 SDK 依赖4.2 创建配置类4.3 支付宝订单管理接口实现流程4.4 支付宝支付接口实现流程 5.支付宝支付功能演示7.总结 TIP&#xff1a;对于…

软件测试常见问题2

1.用jmeter怎么进行测试&#xff1f; 使用JMeter进行测试的步骤如下&#xff1a; 启动JMeter&#xff0c;右键点击测试计划&#xff0c;选择添加->Threads(Users)->线程组&#xff0c;在线程组下创建请求。在请求中添加HTTP请求信息头&#xff0c;右键点击HTTP请求&…

15-MT-Channel based Broker和Kafka Channel模式

部署MT-Channel based Broker URL&#xff1a; https://knative.dev/docs/install/yaml-install/eventing/install-eventing-with-yaml/#optional-install-a-broker-layer kubectl apply -f https://github.com/knative/eventing/releases/download/knative-v1.12.1/mt-channel…

2023年复盘—坚持长期主义

大家好,这里是大话硬件。 按照往年的逻辑,很多知识博主都会在12月份发出2023年的年终总结出来,但是今年好像很多博主还没有更新类似总结文章。去年我是在12月24号更新的,今年的总结文章在上周有一些简单的构想,但是没有时间写,因此,这篇文章对2023 年进行一个复盘。 复…

【UEFI基础】EDK网络框架(VLAN)

VLAN VLAN代码综述 在MNP中有很多的VLAN介绍&#xff0c;MNP存在的一个重要原因也是为了处理VLAN&#xff0c;而本文介绍的NetworkPkg\VlanConfigDxe\VlanConfigDxe.inf其实只是一个帮助模块&#xff0c;真正的VLAN配置还是在MNP中。 VLAN同样是一个UEFI Driver Model&#…

[蓝桥杯 2013 省 B] 翻硬币

题目背景 小明正在玩一个“翻硬币”的游戏。 题目描述 桌上放着排成一排的若干硬币。我们用 * 表示正面&#xff0c;用 o 表示反面&#xff08;是小写字母&#xff0c;不是零&#xff09;&#xff0c;比如可能情形是 **oo***oooo&#xff0c;如果同时翻转左边的两个硬币&…

力扣(leetcode)第680题验证回文串II(Python)

680.验证回文串II 题目链接&#xff1a;680.验证回文串II 给你一个字符串 s&#xff0c;最多 可以从中删除一个字符。 请你判断 s 是否能成为回文字符串&#xff1a;如果能&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#x…

Redis实现分布式会话

Redis实现分布式会话 1 什么是分布式会话 1 这是我么之前学过的注册登录模式 2 如果非常多的人访问&#xff0c;因为单台服务器的访问承受能力是有限的&#xff0c;那么我们就想用多态服务器来承担压力 3 一般通过负载均衡的方式来实现&#xff0c;来分担服务器的压力。 4 负…

算法每日一题:统计出现过一次的公共字符串 | 哈希 | getOrDefault()

大家好&#xff0c;我是星恒 今天给大家带来的又是一道经典的哈希的题目&#xff1b;这道题本身并不难&#xff0c;但他将getOrDefault()函数利用的简直不要太优雅了&#xff0c;很适合作为理解Map应用的学习题目 题目&#xff1a;给你两个字符串数组 words1 和 words2 &#x…

【PlantUML】- 时序图

写在前面 本篇文章&#xff0c;我们来介绍一下PlantUML的时序图。这个相对类图来讲&#xff0c;比较简单&#xff0c;也不需要布局。读完文章&#xff0c;相信你就能实际操作了。 目录 写在前面一、基本概念二、具体步骤1.环境说明2.元素3.语法4.示例 三、参考资料写在后面系列…