【MySQL面试题pro版-8】

server/2024/10/18 9:16:41/

MySQL是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的RDBMS (Relational Database Management System,关系数据库管理系统)应用软件之一。

mysql_3">mysql的全复制、半复制、异步复制

异步复制
mysql默认的就是异步复制。主库在执行完客户端提交的事务后会立即将结果返回给客户端,并不关心从库是否已经 接收并处理。主库将事务 Binlog 事件写入到 Binlog 文件中,此时主库只是通知 Dump 线程发送这些新的 Binlog, 然后主库就会继续处理提交操作,并不保证这些 Binlog 传到任何一个从库节点上。这样就会存在一个问题,如果主 库出现故障,此时主库已经提交的事务可能并没有传到从库上,可能导致数据丢失。
全复制
当主库提交事务之后,所有的从库节点必须收到、APPLY并且提交这些事务,然后主库线程才能继续做后续操作。因 为需要等待所有从库执行完该事务才能返回,所以全同步复制的性能必然会收到严重的影响。
半同步复制
介于异步复制和全同步复制之间,主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库 接收到并写到 relay log 中才返回给客户端。相对于异步复制,半同步复制提高了数据的安全性,同时它也造成了一 定程度的延迟。 半同步复制的出现,就是为了保证在任何时刻主备数据一致的问题。相对于异步复制,半同步复制要求执行的每一个 事务,都要求至少有一个备库成功接收后,才返回给用户。实现原理也很简单,主库本地执行完毕后,等待备库的响 应消息(包含最新备库接收到的binlog(file,pos)),接收到备库响应消息后,再返回给用户,这样一个事务才算 真正完成。在主库实例上,有一个专门的线程(ack_receiver)接收备库的响应消息,并以通知机制告知主库备库已 经接收的日志,可以继续执行。安装一个插件,然后设置mysql的参数即可。

mysql_12">mysql半同步复制的特点

  1. 从库会在连接到主库时告诉主库,它是不是配置了半同步。
  2. 如果半同步复制在主库端开启,并且至少有 一个半同步复制的从库节点,那么此时主库的事务线程在提交时会被阻塞并等待,结果有两种可能:
    1. 至少一个 从库节点通知它已经收到了所有这个事务的Binlog事件;
    2. 一直等待直到超过配置的某一个时间点为止,此时, 半同步复制将自动关闭,转换为异步复制。
  3. 从库节点只有在接收到某一个事务的所有 Binlog,将其写入到 Relay Log 文件之后,才会通知对应主库上面的等待线程。
  4. 如果在等待过程中,等待时间已经超过了配置的超 时时间,没有任何一个从节点通知当前事务,那么此时主库会自动转换为异步复制,当至少一个半同步从节点赶上来 时,主库便会自动转换为半同步方式的复制。
  5. 半同步复制必须是在主库和从库两端都开启时才行,如果在主库 上没打开,或者在主库上开启了而在从库上没有开启,主库都会使用异步方式复制。

drop,delete与truncate的区别

  1. truncate和delete只删除数据不删除表的结构(定义),而drop语句将删除表的结构被依赖的约束(constrain),触发 器(trigger),索引(index);依赖于该表的存储过程/函数将保留,但是变为invalid状态。
  2. delete命令是DML,删除的数据将存储在系统回滚段中,需要的时候,数据可以回滚恢复。 而truncate,drop命令是DDL,删除的数据是操作立即生效,原数据不放到rollback segment中,不能回滚,数据不 可以回滚恢复。
  3. delete命令,不会自动提交事务,操作会触发trigger;而truncate,drop命令,执行后会自动提交事务,操作不 触发trigger。
  4. 速度:一般来说:drop > truncate > delete
  5. drop直接删掉表 truncate删除表中数据,再插入时自增长id又从1开始 delete删除表中数据,可以加where字 句。

什么情况下应不建或少建索引

  1. 数据量太少的不建议建立索引
  2. 经常插入、删除、修改的表,需要减少索引,不要建太多
  3. 数据重复且分布平均的表字段,比如一个列的值只有0和1 这种就不要建立了。

创建数据库表要注意什么?

  1. 字段名要见名知意,不要乱起。
  2. 字段的大小分配要认真考虑,要尽量减少空间,合理安排
  3. 要考虑是否有并发场景,需要建立version字段
  4. 用varchar代替char,动态分配长度
  5. 避免表有null,最好都搞默认值,索引查询会非常有效

http://www.ppmy.cn/server/13208.html

相关文章

探究C++20协程(5)——基于挂起实现无阻塞的定时器

实现目标 当用传统的线程 sleep 函数来让程序等待时,实际上是在阻塞当前线程。阻塞意味着这个线程在指定的时间(例如100毫秒)内无法执行任何其他任务。这种方式虽然简单,但效率低下,因为它导致CPU资源在等待期间未被充…

自动驾驶时代的物联网与车载系统安全:挑战与应对策略

随着特斯拉CEO埃隆马斯克近日对未来出行景象的描绘——几乎所有汽车都将实现自动驾驶,这一愿景愈发接近现实。马斯克生动比喻,未来的乘客步入汽车就如同走进一部自动化的电梯,无需任何手动操作。这一转变预示着汽车行业正朝着高度智能化的方向…

计算机网络原原理学习资料分享笔记---第一章/第六节(为有梦想的自己加油!)

第六节 计算机网络与 因特网发展简史 第六节 计算机网络与因特网发展简史 知识点 1 计算机网络与因特网发展简史 第六节 计算机网络与因特网发展简史 3 、 1972 年底, ARPAnet已经发展到 15 个交换结点。 4 、 20 世纪 70 年代早期与中期,除了ARPAn…

docker (CentOS,ubuntu)安装及常用命令

Docker和虚拟机一样,都拥有环境隔离的能力,但它比虚拟机更加轻量级,可以使资源更大化地得到应用 Client(Docker客户端):是Docker的用户界面,可以接受用户命令(docker build&#xff…

大数据第六天

这里写目录标题 问题解决问题查询插入(时间慢)练习sql数据清理 问题 FAILED: ParseException line 1:16 mismatched input ‘input’ expecting INPATH near ‘local’ in load statement MismatchedTokenException(24!155) 加载数据的时候出现了这个错误,我们解释…

做视频号小店一年半,内部玩法曝光,今日全盘托出

大家好,我是电商笨笨熊 腾讯推出电商的消息一出来,就成为了电商界的又一关注点; 不少人称腾讯做电商不会长久,也有人称视频号小店必将成为未来电商黑马; 无论是哪种说法,视频号小店我先替大家做了一年半…

windows linux 安装 ngrok穿透 很简单

首先 内网穿透工具下载地址 https://dashboard.ngrok.com/ 注册个账号,不想注册账号的 去这里下载 里面的命令不好用 用我下面命令就行 链接:https://pan.baidu.com/s/1ZmcTwT1Z_yZDh6hmyFjyCA?pwdwx3p 提取码:wx3p --来自百度网盘超级…

Python 基于docker部署的Mysql备份查询脚本

前言 此环境是基于docker部署的mysql,docker部署mysql可以参考如下链接: docker 部署服务案例-CSDN博客 颜色块文件 rootbogon:~ 2024-04-18 16:34:23# cat DefaultColor.py ######################################################################…