首页 > 数据库 >最全MySQL面试题和答案(四)

最全MySQL面试题和答案(四)

时间:2024-08-13 21:55:28浏览次数:15  
标签:面试题 数据库 SQL 中继 查询 线程 MySQL 日志 最全

1.数据库结构优化

一个好的数据库设计方案对于数据库的性能往往会起到事半功倍的效果。优化设计需要考虑数据冗余、查询和更新的速度、字段的数据类型是否合理等多方面的因素。

将字段很多的表分解成多个表

概述:对于字段较多的表,如果有些字段的使用频率很低,可以将这些字段分离出来形成新表。这样可以减少表的数据量,从而提高查询性能。

增加中间表

概述:对于需要经常联合查询的表,可以建立中间表以提高查询效率。通过建立中间表,将需要通过联合查询的数据插入到中间表中,然后将原来的联合查询改为对中间表的查询。

增加冗余字段

概述:设计数据表时应尽量遵循范式理论的规约,尽可能地减少冗余字段,使数据库设计更加精致、优雅。然而,合理地增加冗余字段可以提高查询速度。表的规范化程度越高,表之间的关系越多,连接查询的情况也就越多,性能可能越差。

注意:冗余字段的值在一个表中修改后,必须在其他表中同步更新,否则可能导致数据不一致的问题。

2.大表优化

3.MySQL 主从复制原理及流程

主从复制的作用

概述

  • 数据备份与灾难恢复:从数据库可以作为主数据库的备份,用于灾难恢复。
  • 读写分离:在从数据库上执行只读操作,分担主数据库的读取压力。
  • 负载均衡:在从数据库上分担主数据库的读写操作,实现负载均衡。
  • 升级测试:在从库上进行数据库版本的升级测试。

MySQL 主从复制工作原理

  1. 在主库上记录二进制日志(Binary Log)

    • 主数据库(Master)将所有数据更改操作记录到二进制日志中。
  2. 从库拉取并写入中继日志(Relay Log)

    • 从数据库(Slave)启动I/O线程,连接主数据库,拉取二进制日志内容,并写入中继日志中。
  3. 从库执行中继日志中的SQL事件

    • 从数据库通过SQL线程读取中继日志中的SQL事件,并顺序执行这些事件。

主从复制的基本流程和线程

  • 主数据库(Master)

    • Binlog线程:记录DDL和DML操作到二进制日志中。
  • 从数据库(Slave)

    • IO线程:拉取二进制日志内容,写入中继日志中。
    • SQL执行线程:读取中继日志中的SQL事件,并执行这些事件。

复制过程概述

  1. 主数据库

    • 每个事务的操作记录到二进制日志中。
  2. 从数据库

    • IO线程:拉取二进制日志并写入中继日志中。
    • SQL线程:读取中继日志中的SQL事件,执行这些SQL语句,确保数据一致性。

复制过程中可能遇到的问题

  • 延迟问题:网络延迟或负载不均衡可能导致从库的数据复制滞后。
  • 主从同步中断:可能由网络问题或配置错误导致,需要修复。
  • 数据一致性:主数据库数据更改未能及时复制到从数据库,可能需要修复数据不一致问题。

好了,到此为止MySQL的面试题分享就结束了,希望大家在面试前多看看这部分的题目,在真正面试的时候也能立刻答上来,拿到更好的offer!!!

标签:面试题,数据库,SQL,中继,查询,线程,MySQL,日志,最全
From: https://www.cnblogs.com/cjybigdatablog/p/18357748

相关文章

  • MySQL学习[4] ——MySQL锁
    四、MySQL锁4.1MySQL有哪些锁?4.1.1全局锁全局锁就是**对整个数据库实例加锁,主要用于全库逻辑备份**等场景。flushtableswithreadlock#加全局锁unlocktables#解锁加上全局(读)锁后,整个数据库都是只读状态。若数据库的数据较多,导致整个处理流程较慢,数据库......
  • MySQL8.0 Clone Plugin 实现解析浅析
    MySQL8.0ClonePlugin实现解析浅析从8.0.17版本开始官方实现了clone的功能,允许用户通过简单的SQL命令把远端/本地的数据库实例拷贝到其他实例后快速拉起一个新的实例。该功能由一些列的WL组成:Clonelocalreplica(WL#9209):实现了数据本地Clone。Cloneremotereplica......
  • MySQL数据库——数据库的数据类型(一)
    四、数据类型1.数据类型分类分类数据类型说明数值类型BIT(M)位类型。指定位数,默认值1,范围1-64TINYINT[UNSIGNED]带符号的范围-128127,无符号范围0255.默认有符号BOOL使用0和1表示真和假SMALLINT[UNSIGNED]带符号是-2^15次方到2^15-1,无符号是2^16-1IN......
  • 【JAVA_Mysql】JAVA连接Mysql基本步骤
    ......
  • MySQL:复杂查询(二)——联合查询02
    本篇博客接上篇,上篇已讲联合查询部分知识:MySQL:复杂查询(一)——聚合函数&分组查询&联合查询01-CSDN博客目录1、联合查询1.1外连接1.1.1右外连接RIGHTJOIN1.1.2左外连接LEFTJOIN1.2自连接1.3子查询1.3.1单行子查询1.3.2多行子查询[NOT]IN1.3.3 多列......
  • 尚硅谷MYSQL(第七章)
    从函数定义的角度出发,我们可以将函数分成内置函数和自定义函数。在SQL语言中,同样也包括了内置函数和自定义函数。内置函数是系统内置的通用函数,而自定义函数是我们根据自己的需要编写的里面有因子的话因子相同 随机数相同四舍五入中......
  • 实习记录day02:MySQL是有null和空的区别的
    实习第二天今天第一次骑电动车,平时不敢骑,但是这次来的路上实现没有单车,本人又不想走路X(,骑车无惊无险平安落地(撒花!)上午的时候被分配了一个小任务,优化一个逻辑,让一个不接受参数的死接口变成可接受参数的活接口。我本来想直接改原来的代码实现目的,一改突然就爆红了。原来这个se......
  • 基于Spring Boot+MySQL的医疗企业固定资产管理系统
    目录前言 一、技术栈二、系统功能介绍三、核心代码1、登录模块 2、文件上传模块3、代码封装前言系统根据现有的管理模块进行开发和扩展,采用面向对象的开发的思想和结构化的开发方法对北京医疗企业固定资产管理的现状进行系统调查。采用结构化的分析设计,该方法要......
  • 基于Flask与MySQL的在线问答系统的设计与实现/Python/计算机毕业设计
    摘要为了更够是学生更快更方便的获取问题答案,开发一款在线问答系统供学生使用。基于系统的业务要求,系统开发平台为Windows10,主要使用Python语言进行开发,以及Python开发语言的框架Flask,使用MySQL作为数据库存储相关数据。开发软件为PyCharm,与此同时运用Navicat作为数据库管......
  • TapData 信创数据源 | 国产信创数据库 PolarDB MySQL 数据同步指南,加速国产化进程,推进
    随着国家对自主可控的日益重视,目前在各个行业和区域中面临越来越多的国产化,采用有自主知识产权的国产数据库正在成为主流。长期以来,作为拥有纯国产自研背景的TapData,自是非常重视对于更多国产信创数据库的数据连接器支持,旗下产品已陆续与**阿里云、华为云、麒麟软件、优炫数据库......