【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 事务提交后即删除


8、锁分类

1、表锁 

select from table  for update

2、行锁

where id = 11  for update

如果id主键11存在,则行锁

否则临键锁,查找上、下各一个主键,组成左开右闭的范围锁

区间为 (10,15] 

因为id =11是等值查询,退化成间隙锁 (10,15)

select * from t where id >= 10 and id < 11 for update;

3、间隙锁 gap lock

范围锁,左开右开

4、临键锁 next-key lock

范围锁,左开右闭原则

 

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

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

相关文章

Linux最小系统安装无法查看IP地址

1&#xff0c;出现原因 服务器重启完成之后&#xff0c;我们可以通过linux的指令 ip addr 来查询Linux系统的IP地址&#xff0c;具体信息如下: 从图中我们可以看到&#xff0c;并没有获取到linux系统的IP地址&#xff0c;这是为什么呢&#xff1f;这是由于启动服务器时未加载网…

【MySQL系列 05】Schema 与数据类型优化

良好的数据库 schema 设计和合理的数据类型选择是 SQL 获得高性能的基石。 一、选择优化的数据类型 MySQL 支持的数据类型非常多&#xff0c;选择正确的数据类型对于获得高性能至关重要。不管存储哪种类型的数据&#xff0c;下面几个简单的原则都有助于做出更好的选择。 1. …

数据通信练习题

1.0osi七层模型 应用层 data 表示层 会话层 传输层 数据段 防火墙&#xff0c;端口&#xff08;TCP UDP&#xff09; 网络层 数据包 路由器 数据链路层 数据帧 交换机 物理层 比特流 网卡 2.IP地址分类 私有地址 A类 0--127 10.0.0.0…

提升日志管理效率:掌握CKA认证中的边车容器技巧

往期精彩文章 : 提升CKA考试胜算&#xff1a;一文带你全面了解RBAC权限控制&#xff01;揭秘高效运维&#xff1a;如何用kubectl top命令实时监控K8s资源使用情况&#xff1f;CKA认证必备&#xff1a;掌握k8s网络策略的关键要点提高CKA认证成功率&#xff0c;CKA真题中的节点维…

C++字符串操作【超详细】

零.前言 本文将重点围绕C的字符串来展开描述。 其中&#xff0c;对于C/C中字符串的一些区别也做出了回答&#xff0c;并对于C的&#xff08;string库&#xff09;进行了讲解&#xff0c;最后我们给出字符串的不同表达形式。 开发环境&#xff1a; VS2022 一.字符串常量跟字…

光伏数字化管理平台:驱动绿色能源革命的智能化引擎

随着全球对可再生能源需求的不断增长&#xff0c;光伏产业已经成为推动绿色能源革命的重要力量。在这个背景下&#xff0c;光伏数字化管理平台应运而生&#xff0c;以其强大的数据处理、实时监控和智能优化功能&#xff0c;为光伏电站的运营管理和维护带来了革命性的变革。 光伏…

如何正确选择国外服务器的带宽和线路呢?

国外大带宽服务器是一种提供高带宽、高速网络连接和良好稳定性的服务器&#xff0c;但在中国使用这类服务器可能涉及到违反法律法规的风险。因此我无法为你提供相关帮助。接下来和源库一起了解如何正确选择国外服务器的带宽和线路呢? 考虑目标用户的地理位置。如果目标用户主要…

SpringBoot注解--08--注解@JsonInclude

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 JsonInclude注解是jackSon中最常用的注解之一&#xff0c;是为实体类在接口序列化返回值时增加规则的注解 1.JsonInclude用法2.JsonInclude注解中的规则有 案例需求…

WordPress供求插件API文档:用户登录

该文档为WordPress供求插件文档&#xff0c;详情请查看 WordPress供求插件&#xff1a;一款专注于同城生活信息发布的插件-CSDN博客文章浏览阅读67次。WordPress供求插件&#xff1a;sliver-urban-life 是一款专注于提供同城生活信息发布与查看的插件&#xff0c;该插件可以实…

PyCM:Python中的混淆矩阵库

PyCM&#xff1a;Python中的混淆矩阵库 在机器学习和数据科学领域&#xff0c;评估模型的性能是至关重要的。混淆矩阵是一种常用的评估工具&#xff0c;用于可视化和量化分类模型的预测结果。PyCM是一个开源的Python库&#xff0c;提供了丰富的功能来计算和分析混淆矩阵。本文将…

2024 PhpStorm激活,分享几个PhpStorm激活的方案

文章目录 PhpStorm 公司简介我这边使用PhpStorm的理由PhpStorm 2023.3 最新变化AI Assistant 预览阶段结束 正式版基于 LLM 的代码补全测试代码生成编辑器内代码生成控制台中基于 AI 的错误解释 Pest 更新PHP 8.3 支持#[\Override] 特性新的 json_validate() 函数类型化类常量弃…

HubSpot和NETFARMER是什么关系?

HubSpot和NETFARMER之间的关系是合作伙伴关系&#xff0c;特别是在亚太地区。NETFARMER作为HubSpot的合作伙伴&#xff0c;专注于帮助企业在海外市场获得更多客户&#xff0c;实现业务增长和成功。 NETFARMER具备丰富的经验和专业的营销团队&#xff0c;他们深入了解亚太地区各…

软件测试APP完整测试作业流程(附流程图),公司级软件测试流程化办公

目录 1. 概述 2. 软件测试流程 3. 软件测试周期人员活动图 4. 总结 1. 概述 1.1 目的 有效的保证软件质量&#xff1b; 有效的制定不同测试类型&#xff08;软件系统测试、音频主观性测试、Field Trial、专项测试、自动化测试、性 能测试、用户体验测试&#xff09;的软件…

mysql 常用命令

1、显示锁的时间 show status like innodb_row_lock%;2、锁一行的方法 //开启 begin; //锁一行 select * from tbl_user where name 1aa1 for update;//解锁 commit;3、设置不自动提交 set autocommit 0; //自动提交 set autocommit 1;4、查看是否支持profile show vari…

go go.mod file not found in current directory or any parent directory

场景&#xff1a; 安装好 liteide 之后创建了第一个 “hello world” 的golang 项目&#xff0c;却报了如下错误。 原因分析&#xff1a; go 的环境配置问题。与 golang 的包管理有关。 解决方案&#xff1a; 如果你是 Windows 系统&#xff0c;快捷键 “WinR”&#xff0c…

使用Docker实现Jenkins+Python + Pytest +Allure 接口自动化

一、Jenkins搭建 参考《Docker 安装 Jenkins》 进入 jenkins 容器 CLI 界面 docker exec -itu root jenkins /bin/bash二、准备条件 1、替换镜像内源 为了安装wget&#xff0c;默认用yum会安装不上wget命令&#xff0c;参考文章《docker容器内如何更换yum源【只想换成国内…

EE5437-IOT(Lecture 07-Control Interface System)

Review&#xff1a; introduce the micro input device system&#xff08;MIDS&#xff09; • The calibration and testing has been covered • The introduction to filters with the example called Butterworth filter and the maths have been also demonstrated. …

vxe-table配合Export2Excel导出object类型数据{type,count}。表格数据呈现是利用插槽,导出只要count该怎么做

先贴一张数据来&#xff1a; 一、然后是vxe-grid的columns配置&#xff1a; 然后就正常用封装好的Export2Excel就行。 碰到一次在控制台报错&#xff1a; 没复现出来&#xff0c;大概就说是count咋样咋样。 以后碰到的话再说&#xff0c;各位要用的话也注意看看 二、或者 用js…

Unity笔记:C#基础(1)

杂项 虚函数 CSDN - C虚函数详解 cnblog - C#中的虚函数virtual 常量池与new 在C#中&#xff0c;string是不可变的&#xff0c;这意味着对string对象的操作通常会返回一个新的string对象&#xff0c;而不会修改原始的string对象。因此&#xff0c;几乎所有涉及更改string内…

redis最新版本在Windows系统上的安装

一、说明 这次安装操作主要是根据redis官网说明&#xff0c;一步步安装下来的&#xff0c;英语比较好的同学&#xff0c;可以直接看文章底部的超链接1&#xff0c;跳到官网按步操作即可。 目前redis的最新稳定版本为redis7.2。 二、Windows环境改造 Redis在Windows上不被官方…