MySQL数据库面试知识点
1、数据库基础:
MySQL是一个开源的关系型数据库管理系统,用于存储、管理和检索数据。它支持多种存储引擎,包括InnoDB、MyISAM等。MySQL是由瑞典公司MySQL AB开发,后来被Sun Microsystems收购,最终被甲骨文公司(Oracle Corporation)收购。MySQL是一个广泛应用于Web开发的数据库系统,它可以与许多编程语言(如PHP、Python、Java等)配合使用,同时也是许多流行的内容管理系统(如WordPress、Drupal、Joomla等)的基础。
2、数据库架构:
MySQL主要有两种架构选择:一种是传统的关系型数据库架构,另一种是分布式数据库架构。在关系型数据库架构中,数据被存储在表格中,表格由行和列组成,每行表示一条记录,每列表示一个属性。这种架构适用于大量数据的存储和检索,但并发访问控制和事务处理等方面需要一些复杂的设置。在分布式数据库架构中,数据被分散到多个节点上,每个节点可以独立处理和存储数据,这种架构适用于超大规模数据的存储和处理,但需要更加复杂的技术和设计。
3、表关联:
在MySQL中,可以使用JOIN来关联多个表。JOIN主要有三种类型:内连接(INNER JOIN)、左连接(LEFT JOIN)和右连接(RIGHT JOIN)。内连接返回两个表中匹配的行;左连接返回左表中的所有行,右连接返回右表中的所有行。具体使用哪种JOIN取决于查询需求和数据表关系。
4、索引:
索引是MySQL中一个重要的概念,用于加快查询速度。索引类似于书籍的目录,可以快速定位到数据表中的某一行或某一列。MySQL支持多种索引类型,包括B-tree索引、哈希索引、全文索引等。其中B-tree索引是常用的索引类型,它使用B-tree数据结构来存储索引数据,可以支持非常高效的查找和排序操作。
5、SQL查询优化:
SQL查询优化是提高MySQL性能的关键之一。优化SQL查询的方法有很多种,包括选择合适的数据类型、使用索引、避免使用SELECT *、使用LIMIT和OFFSET等。此外,MySQL也提供了一些查询优化工具和技术,如慢查询日志、性能模式等。
6、数据类型:
MySQL支持多种数据类型,包括整型、浮点型、字符串类型、日期和时间类型等。其中整型包括tinyint、smallint、mediumint、int和bigint等;浮点型包括float和double等;字符串类型包括char、varchar、text等;日期和时间类型包括date、time、datetime和timestamp等。不同的数据类型适用于不同的场景,需要根据实际需求选择合适的数据类型。
7、存储过程和函数:
MySQL支持存储过程和函数。存储过程是一组SQL语句的集合,可以接受参数并返回结果,它可以在数据库中进行一些复杂的操作。函数则是用来执行一些特定的计算或操作,并返回结果。使用存储过程和函数可以提高代码重用率和执行效率。
8、事务处理:
事务是MySQL中一个重要的概念,它是一组必须全部执行或全部不执行的SQL语句集合。事务处理可以确保数据的一致性和完整性,防止数据出现不一致的情况。MySQL中的事务处理主要有两种隔离级别:读未提交(Read uncommitted)和读已提交(Read committed)。读未提交级别可以读取其他事务未提交的数据,而读已提交级别则只能读取已经提交的事务数据。
9、数据库备份和恢复:
数据库备份是保证数据安全的重要措施之一。MySQL支持多种备份方式,包括物理备份和逻辑备份。物理备份是将整个数据库文件直接复制出来进行备份,逻辑备份则是将数据库中的数据以SQL语句的形式导出并保存。如果数据库出现问题,可以使用备份文件进行恢复。
10、数据安全性:
为了保证MySQL数据库的安全性,可以采取多种措施,如使用强密码、禁用远程访问、限制IP访问等。MySQL也提供了一些安全特性,如访问控制列表(Access Control Lists)、加密(Encryption)等。
11、MySQL性能调优:
MySQL性能调优主要包括调整查询性能、内存使用情况、CPU使用情况等方面的优化。查询性能优化可以通过优化SQL语句、使用索引等方式实现;内存使用情况可以通过调整缓存参数、连接数等方式进行优化;CPU使用情况可以通过调整线程池参数等方式进行优化。
12、数据库扩展性:
当数据库无法处理日益增长的数据量时,需要考虑数据库的扩展性。扩展性是指数据库系统在面对不断增长的数据量和复杂度时,能够平滑地扩展其性能和处理能力的能力。MySQL提供了多种扩展方案,包括分表分库(Sharding)、主从复制(Master-Slave Replication)、集群(Clustering)等。分表分库是将一个大表拆分成多个小表,分别存储在不同的数据库或服务器上,以减轻单个数据库
13、MySQL主从数据库
如何搭建MySQL主从数据库是MySQL中常见的一种高可用性和可扩展性的架构模式,通过主从复制技术实现数据同步,提供读写分离、备份恢复、负载均衡等功能。下面是一个简单的MySQL主从数据库搭建的步骤:
1.准备两台服务器,分别安装MySQL数据库。
2.在其中一台服务器上创建主库,并设置一个唯一的随机密码(例如root密码),启动主库。
3.在另一台服务器上创建从库,并启动从库。
4.登录主库,创建一张表用来记录主库的binlog位置。
CREATE TABLE master.binlog_info (
id INT NOT NULL AUTO_INCREMENT, log_name VARCHAR(255) NOT NULL, pos INT NOT NULL, PRIMARY KEY (id));
5.登录从库,修改从库的配置文件(my.cnf或my.ini),添加以下配置:
server-id = 2 # 从库的唯一标识,每个从库的server-id必须唯一
relay-log = mysql-relay-bin # 从库的relay log名称,与主库的binlog名称相同
relay-log-index = mysql-bin.000001 # 从库的relay log索引文件名,与主库的binlog文件名相同
relay-log-name = mysql-relay-bin # 从库的relay log名称,与主库的主库binlog名称相同
log-bin = mysql-bin # 从库的binlog名称,与主库的binlog名称相同
6.重启从库。
7.在主库上执行以下语句,开启主库的binlog功能:
SET GLOBAL binlog_format = 'ROW'; # 行级日志格式
SET GLOBAL sync_binlog = 1; # 每次事务提交后立即将binlog写入磁盘
8.在主库上创建一个用于复制的用户,并为该用户授予适当的权限。
9.在从库上执行以下语句,设置从库连接到主库的用户名和密码:
CHANGE MASTER TO MASTER_USER='username', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=0; # 'username'和'password'分别为主库连接用户名和密码,'mysql-bin.000001'和0分别为主库当前的binlog文件名和位置
10.在从库上启动slave服务:
START SLAVE;
11.在主库上执行以下语句,开始向从库复制数据:
FLUSH TABLES WITH READ LOCK; # 锁定主库上的所有表,防止数据被修改
14、MySQL如何实现读写分离
MySQL实现读写分离的主要方法是使用主从复制(Master-Slave Replication)或称为复制(Replication)。这里是一种基本的实现方式:
1.配置主服务器(Master):确保MySQL已安装并运行。登录到MySQL控制台,并执行
GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%' IDENTIFIED BY 'password';
,其中’replication_user’是用于复制的用户名,'password’是该用户的密码。创建一个用于复制的MySQL用户,并赋予上述权限。在主服务器的配置文件(通常是my.cnf或my.ini)中添加以下配置:
ini`[mysqld] server-id=1 log_bin=mysql-bin binlog_do_db=your_database_name
请确保替换your_database_name为实际的数据库名。
2.配置从服务器(Slave):确保MySQL已安装并运行。登录到MySQL控制台,并执行以下命令,设置从服务器连接到主服务器的信息和复制的起始位置:
CHANGE MASTER TO MASTER_HOST='master_ip_address', MASTER_USER='replication_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='binlog_file_on_master', MASTER_LOG_POS=0;`
请确保替换master_ip_address为主服务器的IP地址,replication_user和password为上一步中创建的复制用户的用户名和密码,binlog_file_on_master为主服务器当前的二进制日志文件名。启动从服务器:START SLAVE;
3.测试读写分离:在应用程序中,可以将读操作和写操作分开。读操作指向从服务器,而写操作指向主服务器。这样可以分摊数据库的负载,并提高系统的性能。在主服务器上进行写操作,然后观察从服务器是否同步这些更改。可以使用以下命令检查从服务器的状态:
SHOW SLAVE STATUS\G
;。从服务器的Seconds_Behind_Master字段应显示为0,表示主从服务器之间的复制是实时的。
4.高可用性和故障转移:为了提高系统的可用性,可以在另一个从服务器上创建一个与主服务器保持同步的备份。如果主服务器发生故障,可以临时将其中一个从服务器提升为主服务器,而其他从服务器可以继续提供读服务。可以使用诸如MHA(Master High Availability)等工具来自动化故障转移过程。以上是一个基本的MySQL读写分离配置示例。根据实际需求和环境,可能需要进行额外的配置和优化。
相关文章:

MySQL数据库面试知识点
1、数据库基础: MySQL是一个开源的关系型数据库管理系统,用于存储、管理和检索数据。它支持多种存储引擎,包括InnoDB、MyISAM等。MySQL是由瑞典公司MySQL AB开发,后来被Sun Microsystems收购,最终被甲骨文公司(Oracle…...

超优秀的三维模型轻量化、格式转换、可视化部署平台!
1、基于 HTML5 和 WebGL 技术,可在主流浏览器上进行快速浏览和调试,支持PC端和移动端 2、自主研发 AMRT 展示框架和9大核心技术,支持3D模型全网多端流畅展示与交互 3、提供格式转换、减面展UV、烘焙等多项单模型和倾斜摄影模型轻量化服务 4、…...

云原生全栈监控解决方案(全面详解)
【作者】JasonXu 前言 当前全球企业云化、数字化进程持续加速,容器、微服务等云原生技术在软件架构中快速渗透,IT 架构云化、复杂化持续驱动性能监控市场。企业云化、数字化持续转型,以及为了考虑系统的弹性、效率,企业软件开发中…...

代码随想录二刷 | 回溯 |复原IP地址
代码随想录二刷 | 回溯 |复原IP地址 题目描述解题思路代码实现 题目描述 93.复原IP地址 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。 有效的 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成&am…...

windows资源管理器占用过高CPU的问题
最近,笔者的电脑在进行文件操作时变得异常的卡顿,打开任务管理器发现windows资源管理器占用了50%-80%的CPU。这里指的文件操作包括但不限于解压,复制,粘贴,甚至重命名一个文件夹都会引起50%的CPU占用。起初笔者认为可能…...

redis的常见数据类型和应用场景(非八股)------大总结(学了要会用-------教你如何使用)
Redis的数据类型 Redis 提供了丰富的数据类型,常见的有五种: String(字符串),Hash(哈希),List(列表),Set(集合)、Zset&am…...

UE 可靠UDP实现原理
发送 我们的消息发送都是通过 UChannel 来处理的,通过调用 UChannel::SendBunch 统一处理。 发送的 Bunch 是以 FOutBunch 的形式存在的。当 bReliable 为 True 的时候,表示 Bunch 是可靠的。 发送逻辑直接从UChannel::SendBunch处开始分析 1、大小限…...

智慧博物馆信息化系统建设(1)
博物馆RFID藏品管理系统 博物馆藏品保管是一项十分复杂又繁琐的工作。从事保管工作除了经常、及时地进行藏品的登记、分类、编目、保养和修复等一系列工作外,还需要把有关藏品的信息迅速、正确地提供给利用者。要提高保管工作的效率,达到现代化的科学管理,从发展趋势看,进…...

【数据结构和算法】--- 二叉树(3)--二叉树链式结构的实现(1)
目录 一、二叉树的创建(伪)二、二叉树的遍历2.1 前序遍历2.2 中序遍历2.3 后序遍历 三、二叉树节点个数及高度3.1 二叉树节点个数3.2 二叉树叶子节点个数3.3二叉树第k层节点个数3.4 二叉树查找值为x的节点 四、二叉树的创建(真) 一、二叉树的创建(伪) 在学习二叉树的基本操作前…...

Cesium for Unity包无法加载
太上老君急急如律⚡令⚡ 🥙关闭UnityHub🧀启动梯子🥪cmd 启动UnityHub 🥙关闭UnityHub 🧀启动梯子 🥪cmd 启动UnityHub 把批处理启动文件👈中的exe的路径换成自己的安装目录!保存…...

Leetcode—40.组合总和II【中等】
2023每日刷题(七十七) Leetcode—40.组合总和II 算法思想 实现代码 class Solution { public:vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {vector<vector<int>> ans;vector<int…...

vscode连不上虚拟机,一直密码错误
最近在做毕设,但是vscode使用连接不上虚拟机,我以为是网络配置的问题,一顿查阅没找到原因。 后来查了一下ssh的日志,发现ssh有消息,但是也提示密码错误。 没找到密码配置格式什么的,经查看sshd配置文件发现…...

力扣每日一题 --- 972. 相等的有理数
本题中的一个难点是怎么判断是否相等,如果自己写判断的话是不是很麻烦,判断整数之后再去判断小数部分,那么我们这题的另一个难点就要登场了,第一个难点让本题的情况变得复杂,第二个难点让本题变得很难想到怎么判断&…...

EXECL 单元格字符串链接 CONCAT :应用:将一行数据转为json
源: 目标 函数表示 CONCAT("data", CHAR(10), "{", CHAR(10), " ", "ulAlarmId : ", A5, CHAR(10), " ", "ulAlarmLevel : ", D5, CHAR(10)," ", "bBo…...

基于Python实现人脸识别相似度对比
目录 引言背景介绍目的和意义 人脸识别的原理人脸图像获取人脸检测与定位人脸特征提取相似度计算 基于Python的人脸相似度对比实现数据集准备人脸图像预处理特征提取相似度计算 引言 背景介绍 人脸识别技术是一种通过计算机对人脸图像进行分析和处理,从而实现自动识…...

CSS 蜡烛效果
<template><view class="holder"><!-- 身子 --><view class="candle"><!-- 光源 --><view class="blinking-glow"></view><!-- 火星子 --><view class="thread"></view>…...

渗透测试之Kali如何利用CVE-2019-0708漏洞渗透Win7
环境: 1.攻击者IP:192.168.1.10 系统: KALI2022(vmware 16.0) 2.靶机IP:192.168.1.8 系统:Windows 7 6.1.7601 Service Pack 1 Build 7601 已开启远程协助RDP服务开启了3389端口 问题描述: KALI 如何利用CVE-2019-0708漏洞渗透Win7 解决方案: 1.打开kali,msf搜索…...

Docker(二)安装指南:主要介绍在 Linux 、Windows 10 和 macOS 上的安装
作者主页: 正函数的个人主页 文章收录专栏: Docker 欢迎大家点赞 👍 收藏 ⭐ 加关注哦! 安装 Docker Docker 分为 stable test 和 nightly 三个更新频道。 官方网站上有各种环境下的 安装指南,这里主要介绍 Docker 在…...

LeetCode 410. 分割数组的最大值
一、题目 1、题目描述 给定一个非负整数数组 nums 和一个整数 k ,你需要将这个数组分成 k 个非空的连续子数组。 设计一个算法使得这 k 个子数组各自和的最大值最小。 2、接口描述 class Solution { public:int splitArray(vector<int>& nums, int …...

linux shell脚本 基础认识
Linux 系统中的 Shell 是一个特殊的应用程序,它介于操作系统内核与用户之间,充当 了一个“命令解释器”的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执行的操作传递给内核执行,并…...

一文(10图)了解Cornerstone3D核心概念(万字总结附导图)
Cornerstone3D介绍 Cornerstone3D是一个专门为处理三维医学影像而设计的JavaScript库。 它是Cornerstone项目的一部分,旨在为医学影像社区提供高性能、可扩展且易于使用的开源Web工具,专注于提供交互式的3D医学图像浏览体验,适用于多种医学…...

牛客网-----跳石头
题目描述: 一年一度的“跳石头”比赛又要开始了! 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石。组委会已经选择好了两块岩石作为比赛起点和终点。在起点和终点之间,有N块岩石(不含起点和终点的岩石)。在比赛过程中࿰…...

用ChatGPT教学、科研!大学与OpenAI合作
亚利桑那州立大学(简称“ASU”)在官网宣布与OpenAI达成技术合作。从2024年2月份开始,为所有学生提供ChatGPT企业版访问权限,主要用于学习、课程作业和学术研究等。 为了帮助学生更好地学习ChatGPT和大语言模型产品,AS…...

运维平台介绍:视频智能运维平台的视频质量诊断分析和告警中心
目 录 一、视频智能运维平台介绍 (一)平台概述 (二)结构图 (三)功能介绍 1、运维监控 2、视频诊断 3、巡检管理 4、告警管理 5、资产管理 6、工单管理 7、运维…...

GAMES104-现代游戏引擎:从入门到实践 - 物理引擎课程笔记汇总
文章目录 0 入门资料1 物理引擎基本概念Actor & shapesRigid body dynamicsCollision DetectionCollision Resolution 应用与实践Character controllerRagdoll 0 入门资料 GAMES104-现代游戏引擎:从入门到实践_课程视频_bilibiliGAMES104官方账号 - 知乎课程主页…...

【linux】Xorg的工作原理
介绍 在linux系统上执行nvidia-smi时,总有一个进程占用gpu。 1 N/A N/A 2174 G /usr/lib/xorg/Xorg 4MiB /usr/lib/xorg/Xorg 是与X Window System(简称X11或X)相关的一个应用程序。X Window System是一个…...

02-docker下部署seata
官方部署文档 http://seata.io/zh-cn/docs/ops/deploy-by-docker 配置参数说明 http://seata.io/zh-cn/docs/user/configurations 1、镜像拉取 docker pull seata-server2、复制配置文件 mkdir /home/server/seata cd /home/server/seata docker run -d -p 8091:8091 -p 709…...

回归预测 | Matlab实现GA-APSO-MBP、GA-MBP、MBP、BP多输入单输出回归预测
回归预测 | Matlab实现GA-APSO-MBP、GA-MBP、MBP、BP多输入单输出回归预测 目录 回归预测 | Matlab实现GA-APSO-MBP、GA-MBP、MBP、BP多输入单输出回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab实现GA-APSO-MBP、GA-MBP、MBP、BP多输入单输出回归预测&…...

精益生产咨询背后的秘密:企业如何实现价值最大化
精益生产,起源于丰田生产系统,是一种集中于削减浪费、优化流程、提升顾客价值的生产方法。它的核心在于确保每一步生产过程都能为顾客创造价值。以下是实现精益生产咨询的详细步骤: 1.确定客户价值 一切从顾客需求出发。企业需深入理解顾客…...

创建SERVLET
创建SERVLET 要创建servlet,需要执行以下任务: 编写servlet。编译并封装servlet。将servlet部署为Java EE应用程序。通过浏览器访问servlet。编写servlet 要编写servlet,需要扩展HttpServlet接口的类。编写servlet是,需要合并读取客户机请求和返回响应的功能。 读取和处…...