【MySQL】-知识点整理

1、存储引擎

-- 查询数据库支持的存储引擎
show engines;  
-- 查询当前数据库使用的存储引擎
show variables like '%storage_engines%';

主要的存储引擎说明:
1)MyISAM:无外键、表锁、所有索引都是非聚簇索引、无事务、记录表总条数、删除表以重建表方式
2)Innodb:行锁+表锁、5.6+后支持fulltext、主键是聚簇索引、删除表以按行删除、主键不存在时创建隐藏主键
3)MEMORY:内存型,数据不落磁盘

2、索引结构

1)聚簇索引:索引与数据在一起,索引文件的叶子节点存储实际数据行
2)非聚簇索引:索引文件与数据文件分开,索引的叶子节点存储数据的逻辑地址

3、索引优化

1)回表查询:因为非聚簇索引叶子节点只存储主键ID值,
查询其他字段,需要再次进行主键索引查询,定位到具体

2)索引覆盖:select需要查询的字段只包含索引及主键字段,则直接返回结果,不需要再进行回表查询

3)索引下推:在联合索引(a,b,c),前提是满足最左前缀匹配条件下,
当查询a条件后,如果存在b及c等查询条件。会直接拿出叶子节点的索引值进行比较
而不是通过主键查询行数据再比较。避免了回表

在执行计划中,using index condition 表示使用了索引下推
默认开启,通过设置set optimizer_switch='index_condition_pushdown=off' 关闭


4、数据库3范式(3NF)

1)1NF:所有字段不可拆分,如家庭地址,拆分成省、市、县、街道、小区

2)2NF:没有局部函数依赖,如一张表(学生名、学号、课程名、成绩。。。),
存在学生名+课程名 => 成绩。拆分表,将学生id + 课程id形成联合主键

3)3NF:没有传递函数依赖,如一张表(学生名、院系名、院系地址。。。)。
存在学生名=>院系名=>院系地址

5、join查询

mysql8.0之前的版本,采用nested loop join 嵌套查询方式,以驱动表作为外层循环,被驱动表作为内层循环。导致join效率低下


1)inner join: 两表都包含的数据
2)left join :两表包含 + 左表数据
3)right join:两表包含 + 右表数据

8.0之后,采用hash join。将驱动表数据,以hash表存储在内存中,
只需要遍历一遍被驱动表,即可完成比对。
如果驱动表数据量大,内存不足,则使用磁盘空间,并将数据分片处理。
具体内存大小 使用 join_buffer_size 参数控制。

避免join查询方法
1)将多表数据读取,由应用程序进行join关联
2)使用冗余字段
3)建立大宽表,或异构到ES中


6、事务

6.1、ACID

原子性:事务是最小单位,不可拆分

一致性:事务执行前后,数据总量保持一致。如转账

隔离性:事务执行是独立的,不会被其他事务影响

持久性:事务执行后,数据要持久保存在磁盘上。

6.2、事务问题

1、脏读:一个事务读取另一个事务未提交的内容

2、不可重复读:读取同一个数据,由于另一个事务UPDATE、DELETE数据后,两次前后不一致。

3、幻读:读取范围数据,由于另一个事务DELETE、INSERT后,导致两次不一致。

6.3、隔离级别

1、读未提交RU:

2、读已提交RC:解决脏读

3、可重复读RR(默认级别:在RC基础上解决不可重复读

4、串行化:在RR基础上解决幻读

1.查看当前会话隔离级别select @@tx_isolation;在MySQL 8.0中:SELECT @@transaction_isolation;2.查看系统当前隔离级别select @@global.tx_isolation;3.设置当前会话隔离级别set session transaction isolatin level repeatable read;4.设置系统当前隔离级别set global transaction isolation level repeatable read;5.命令行,开始事务时set autocommit=off 或者 start transaction

7、日志文件

7.1、存储格式

1、statement:记录实际执行的sql语句

2、row:记录行内容

3、mixed:statement与row结合。

在mysql主从同步中,如果使用statement格式,只记录sql语句,在执行有歧义的语句时,导致主从库数据不一致。

如:delete from user  limit 5;

RC级别不支持statement格式

7.2、binlog

记录DDL、DML实际执行的SQL语句,并以二进制形式存储。用于主从同步

7.3、undo log

回滚日志,逻辑日志,记录sql修改前的数据。用于事务回滚。原子性、一致性

每产生一个undo log日志都会有一个trx_id和roll_point生成:
trx_id:保存生成此日志的事务id;
roll_point:将undo log连接起来形成版本连;

7.4、redo log

重做日志,物理日志,记录数据库对磁盘的修改,用于系统崩溃后的修复。持久性、

7.5、relay log

中继日志。用于从库同步主库的binlog日志,记录将要执行的内容。

redolog与binlog 都需要持久化到磁盘

undolog 事务提交后即删除


 

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

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

相关文章

基于el-tree实现懒加载穿梭条

一、关键代码 <template><div><!-- 左侧待选列表 --><div class"left-box"><p>待选列表</p><el-input placeholder"输入关键词过滤" v-model"leftFilterText" clearable/><el-treeref"tree…

便捷在线导入:完整Axure元件库集合,让你的设计更高效!

Axure元件库包含基本的工具组件&#xff0c;可以使原型绘制节省大量的重复工作&#xff0c;保持整个设计页面的一致性和标准化&#xff0c;同时显得专业。Axure元件库就像我们日常生活中的门把手、自行车踏板和桌子上的螺丝钉&#xff0c;需要组装才能使用。作为一名成熟的产品…

【Web - 框架 - Vue】随笔 - Vue的简单使用(02) - 快速上手

【Web - 框架 - Vue】随笔 - Vue的简单使用(02) - 快速上手 Vue模板代码 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Vue模板</title> </head> <body> <div id"…

redis 性能优化二

前言 性能优化的第二篇文章&#xff0c;将重点讲一下Redis 的响应延迟&#xff0c;响应延迟如何对redis 进行优化。这个延迟不是说一个命令或者几个命令变慢了&#xff0c;延迟了几秒&#xff0c;就说Redis 变慢了。在不同的软硬件环境下&#xff0c;Redis 本身的绝对性能并不…

基于STM32开路清障车控制系统设计

目 录 摘 要 I Abstract II 引 言 1 1总体方案论证与设计 3 1.1设计方案 3 1.2主控模块的选型和论证 3 2系统硬件电路设计 5 2.1主控模块设计 5 2.1.1 STM32单片机概述 5 2.1.2 STM32单片机最小系统电路 5 2.2 MCU主要实现功能 6 2.3火焰传感器 7 2.4超声波模块 8 2.5驱动模块…

Docker-自定义镜像

目录 1 前言 2 构建java应用的步骤及镜像结构图 2.1 构建步骤 2.2 镜像结构图 3 Dockerfile常用指令 4 Dockerfile的内容举例 4.1 一般形式 4.2 一般形式的优化 5 构建镜像 5.1 指令 5.2 实操 5.2.1 加载jdk镜像(基础镜像) 5.2.2 构建我们的镜像 5.2.3 使用我们的…

SpringCloud微服务-RabbitMQ快速入门

文章目录 RabbitMQ快速入门1、什么是MQ&#xff1f;2、RabbitMQ概述3、RabbitMQ的结构和概念4、常见消息模型5、HelloWorld RabbitMQ快速入门 1、什么是MQ&#xff1f; MQ &#xff08;MessageQueue&#xff09;&#xff0c;中文是消息队列&#xff0c;字面来看就是存放消息的…

Linux nmcli命令使用教程(nmcli指令)

文章目录 先区分两个概念&#xff1a;网络设备和网络连接网络设备网络连接网络连接的UUID nmcli可以为一个网络设备创建多个网络连接&#xff0c;但同一时刻只有一个能生效 Mastering Network Management with nmcli in Linux&#xff08;掌握Linux中使用nmcli进行网络管理&…

掌握 Vue3、Vite 和 SCSS 实现一键换肤的魔法步骤

前言 一个网站的换肤效果算是一个比较常见的功能&#xff0c;尤其是在后台管理系统中&#xff0c;我们几乎都能看到他的身影&#xff0c;这里给大家提供一个实现思路。 搭建项目 vitevue3搭建项目这里就不演示了&#xff0c;vite官网里面讲得很清楚。 注&#xff1a;这里使…

【Java项目介绍和界面搭建】拼图小游戏——作弊码、查看完整图片

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏 …

实现qq音乐歌词滚动效果

闲来无事&#xff0c;听音乐的时候&#xff0c;突发奇想 实现该效果中&#xff0c;包含了根据声音高低生成音波的功能&#xff0c;有兴趣的直接下载代码即可 这是启动后的效果。

泛微OA本地部署项目

泛微OA本地部署 本文演示脱离公司服务器&#xff0c;在本地搭建泛微 OA。 本次演示的版本如下&#xff1a; ecology&#xff1a;e-9sql server 版本&#xff1a;2012jdk 版本&#xff1a;1.8 一、安装 VmWare、Centos 7 对于 VmWare、Centos 7的安装&#xff0c;此处不再一一…

力扣515. 在每个树行中找最大值(BFS,DFS)

Problem: 515. 在每个树行中找最大值 文章目录 题目描述思路复杂度Code 题目描述 思路 思路1&#xff1a;BFS 套用BFS模板&#xff0c;直接在遍历树的某一层时将当前层的最大值存入数组中 思路2&#xff1a;DFS 回溯思想&#xff0c;在递归时不断更新可选列表&#xff08;根据…

【Flink网络数据传输(3)】RecordWriter的能力:实现数据分发策略或广播到下游InputChannel

文章目录 一.创建RecordWriter实例都做了啥1. 根据recordWrites数量创建不同的代理类2. 创建RecordWriters3. 单个RecordWriter的创建细节 二. RecordWriter包含的主要组件1. RecordWriter两种实现类分别实现分发策略和广播2. ChannelSelectorRecordWriter的发送策略2.1. Chann…

ArmSoM规划开发基于RK3576的开发套件

ArmSoM正计划推出一款新的产品&#xff0c;这款产品将采用强大的RK3576芯片。 本文将为您介绍我们的新产品搭载的RK3576性能参数&#xff0c;以及它如何为您提供卓越的性能和功能。 RK3576处理器 RK3576处理器是一款强大的处理器&#xff0c;具备出色的性能和多样化的功能&a…

8、Linux-软件安装:rpm和yum;配置yum阿里云镜像源

一、介绍 Linux安装软件有两种方式&#xff0c; ①rpm&#xff1a;安装已有的安装包&#xff0c;类似于Windows中双击exe的安装包程序 ②yum&#xff1a;拉取远程仓库的文件&#xff0c;类似于python的pip install 区别&#xff1a;假设软件A依赖软件B&#xff0c;软件B依赖…

【C++庖丁解牛】C++内存管理 | new和delete的使用以及使用原理

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 目录 1. C/C内存分布2. C语…

【C语言】走迷宫之推箱子

前言&#xff1a; 在上一篇文章当中我介绍了一个走迷宫的写法&#xff0c;但是那个迷宫没什么可玩性和趣味性&#xff0c;所以我打算在迷宫的基础上加上一个推箱子&#xff0c;使之有更好的操作空间&#xff0c;从而增强了游戏的可玩性和趣味性。 1. 打印菜单 void menu() {…

Day12:信息打点-Web应用源码泄漏开源闭源指纹识别GITSVNDS备份

目录 开源-CMS指纹识别源码获取方式 闭源-习惯&配置&特性等获取方式 闭源-托管资产平台资源搜索监控 思维导图 章节点 Web&#xff1a;语言/CMS/中间件/数据库/系统/WAF等 系统&#xff1a;操作系统/端口服务/网络环境/防火墙等 应用&#xff1a;APP对象/API接口/微…

Flink JobGraph构建过程

文章目录 前言JobGraph创建的过程总结 前言 在StreamGraph构建过程中分析了StreamGraph的构建过程&#xff0c;在StreamGraph构建完毕之后会对StreamGraph进行优化构建JobGraph&#xff0c;然后再提交JobGraph。优化过程中&#xff0c;Flink会尝试将尽可能多的StreamNode聚合在…