【MySQL面试题pro版-8】

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

mysql的全复制、半复制、异步复制

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

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.mzph.cn/diannao/11.shtml

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

相关文章

Swagger3 使用示例

Swagger3 使用示例 GET 请求,传递 query-string 参数 Operation(summary "GET 请求", description "GET 请求传递 query-string 参数", tags {"用户管理"}) GetMapping(value "/get-query-string", produces "…

2236: 【数学】 回文质数

题目描述 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的)&#xff0c;所以 151 是回文质数。 写一个程序来找出范围[a,b](5 < a < b < 10,000,000)间的所有回文质数; 输入 二个整数 a 和 b . 输出 输出一个回文质数的列表&#xff0c;一行一…

成为程序员后你都明白了什么?

成为程序员后你都明白了什么&#xff1f; 自成为一名程序员以来&#xff0c;我的职业生涯就如同一段充满挑战与收获的旅程。在这段长达七年的时光里&#xff0c;我从一名初出茅庐的新手&#xff0c;历经多次角色转换&#xff0c;直至现在成为一家创业公司的技术负责人&#xf…

OceanBase数据库日常运维快速上手

这里为大家汇总了从租户创建、连接数据库&#xff0c;到数据库的备份、归档、资源配置调整等&#xff0c;在OceanBase数据库日常运维中的操作指南。 创建租户 方法一&#xff1a;通过OCP 创建 确认可分配资源 想要了解具体可分配的内存量&#xff0c;可以通过【资源管理】功…

Unity 对APK签名

关键代码 PS D:\UnityProject\YueJie> jarsigner -verbose -keystore D:\UnityProject\YueJie\user.keystore -signedjar D:\UnityProject\YueJie\meizuemptyapk-release-signed.apk D:\UnityProject\YueJie\MeizuEmpty-release-unsigned.apk 1 示例 # jarsigner的命令格…

【C++从练气到飞升】08---模板

&#x1f388;个人主页&#xff1a;库库的里昂 ✨收录专栏&#xff1a;C从练气到飞升 &#x1f389;鸟欲高飞先振翅&#xff0c;人求上进先读书。 目录 一、泛型编程 什么是泛型编程: 二、函数模板 1. 函数模板概念 2. 函数模板格式 3. 函数模板的原理 4. 函数模板的实例…

JAVA学习-并发.线程状态

一、Java中的线程状态可以分为以下五类&#xff1a; 1. 新建&#xff08;New&#xff09;状态&#xff1a; 当我们创建一个Thread对象时&#xff0c;它的状态是新建状态&#xff0c;表示该线程对象已被创建但还没有启动执行。 2. 运行&#xff08;Runnable&#xff09;状态&…

❤ vue 使用原生组件

❤ vue 使用原生组件 1、input输入框 ① 想让我们的input输入框类型为时间&#xff0c;只需要为我们的输入框简单的加一个类型的type即可 <input type"date" id"birthday" name"birthday" placeholder"年/月/日"> 我们还可以…

Ubuntu 传输文件

scp [选项] 源文件 目标路径 以下是一些常用的 scp 命令选项&#xff1a; -r&#xff1a;递归复制目录和子目录。 -P&#xff1a;指定远程 SSH 服务器的端口号。 -i&#xff1a;指定用于身份验证的私钥文件。 -p&#xff1a;保留源文件的时间戳、权限和所有者。 -v&#x…

element-ui合计逻辑踩坑

element-ui合计逻辑踩坑 1.快速实现一个合计 ​ Element UI所提供的el-table中提供了方便快捷的合计逻辑实现&#xff1a; ​ https://element.eleme.cn/#/zh-CN/component/table ​ 此实现方法在官方文档中介绍详细&#xff0c;此处不多赘述。 ​ 这里需要注意&#xff0c…