MySQL 核心内容
1、文件类型
.frm 表结构
.myd 表数据
.myi 表索引
.logbin 主从复制
.errlog 错误日志
2、架构
A、连接层(连接驱动,常用JDBC)
B、服务层(拦截器、分析器、优化器、过滤器)
C、存储引擎(MyIsAm、Innodb)
D、文件服务(磁盘IO操作)
3、数据库查询的执行顺序
from table -> inner/left/right/outer join on -> where -> group by -> having -> select -> order by
4、索引
A、索引类型
主键索引、唯一索引、复合索引、单值索引、覆盖索引
B、索引失效原因
最左原则
不在索引列进行函数、运算、类型转换(自动和手动)操作
范围查询后后字段会索引失效,所以避免在复合索引列前面进行or、in、大小比较,会导致后面索引失效
like的%号开始的模糊查询,我们一般采用覆盖索引来解决like的%号开始的模糊查询索引失效问题
order by 索引字段顺序,以及多字段排序asc、desc混用,要看索引创建的顺序是否一致
group by分组
C、慢查询优化
explain
id 查询的执行顺序(越大越先执行)
select_type 查询类型(普通类型、主查询、子查询)
ref 查询级别 system(系统级)->const(常量)->ref_unique(唯一索引)->ref(非唯一索引)->index(索引)->range(范围)->ALL(全表扫描)
possible_keys 可能用到的索引名称
keys 实际用到的索引名称
rows 读取数据扫描的数据行数
ref 用到的索引的列或常量 const,columnName
Extra 查询用到的条件 Using Temporary(使用临时表)、Using Filesort(使用内排序)、Using Where(使用条件查询)、Using Index(使用索引)
D、慢查询日志
设置配置文件,开启慢查询日志,慢查询日志设置扫描慢查询的时间(默认10s)
使用命令查询慢查询时间或者慢查询次数最多的前多少条数据显示
5、数据库
特点:ACID
原子性:事务里面的操作要么全部执行要么全部回滚。
一致性:事务前后,状态一致。
隔离性:事务的执行环境是独立的,不受事务外的操作所影响。
持久性:事务提交以后,数据永久存储到磁盘,不受系统错误或崩溃的影响。
事务的隔离级别:
读未提交
读已提交
不可重复读
串行化
脏读:A读到B未提交的数据,读到未提交的数据
不可重复读:B在A重复读之间更改了A读取的数据,数据内容不一致
幻读:A读到B操作前后的数据,数据量不一致
6、锁
MyIsAm(偏读的存储引擎、不支持事务)
读锁(共享锁),不阻塞其他进程的读操作,会阻塞写操作
写锁(独享锁),会阻塞其他进程的读写操作,所以该存储引擎适用于偏读的服务
Innodb(适合高并发、支持事务、行级锁)
行锁,不阻塞其他进程的读操作,会阻塞写操作,颗粒度只锁定处理的行(如果where条件没有使用索引可能导致全表扫描,锁住整张表)
表锁
间隙锁:处理数据使用范围,则范围的所有间隙都会上锁,例如select ... where id > 0 and id < 10 for update;就算数据没有id=6的,也无法进行插入操作,或者将其他id更新至该范围中
如何锁定一行
select ... from ...where id = 1 for update;
直到事务提交才解除
7、主从复制
从机slave 从主机master拉取主机的binary log二进制日志文件
slave的IO线程会自动拉取master的binary log文件到slave从机中
slave的SQL线程会自动复制从master拉取的binary log文件数据到中继日志中,然后解析执行sql文件,完成复制
A、配置主机master,server_id = 1,配置从机白名单ip和账号配置,开启主从复制
B、配置从机slave,server_id = 2,配置开启主从复制,主线问题可以关闭同步
MySQL 核心内容的更多相关文章
- PHP批量替换MySql数据库中的数据内容(替换MySql数据库内容源码)
PHP批量替换MySql数据库内容 UTF-8 1.0版 <?php //声明 //1.本源码开发意图:作者在使用一些CMS建站的时候发现很多CMS把网址写入到数据库了,如果换网址,那么就需要更 ...
- ES6/ES2015核心内容
ECMAScript定义了: JS语言语法 – 语法解析规则.关键字.语句.声明.运算符等. 类型 – 布尔型.数字.字符串.对象等. 原型和继承 内建对象和函数的标准库 – JSON.Math.数组 ...
- struts2框架的核心内容
Struts1和Struts2的区别和对比: Action 类: • Struts1要求Action类继承一个抽象基类.Struts1的一个普遍问题是使用抽象类编程而不是接口,而struts2的Ac ...
- Mysql插入内容过长(Packet for query is too large)
原文:Mysql插入内容过长(Packet for query is too large) 这个以前一直没有碰到过,一次性向Mysql数据库插入内容过长的话会出现这个问题,解决办法就是在Mysql配置 ...
- 30分钟掌握ES6/ES2015核心内容
30分钟掌握ES6/ES2015核心内容 ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript ...
- 30分钟掌握ES6/ES2015核心内容(下)
在 30分钟掌握ES6/ES2015核心内容(上)我们讲解了es6最常用的一些语法:let, const, class, extends, super, arrow functions, templa ...
- Python编程核心内容之一——Function(函数)
Python版本:3.6.2 操作系统:Windows 作者:SmallWZQ 截至上篇随笔<Python数据结构之四--set(集合)>,Python基础知识也介绍好了.接下来准备干 ...
- mysql数据库内容相关操作
第一:介绍 mysql数据内容的操作主要是: INSERT实现数据的插入 UPDATE实现数据的更新 DLETE实现数据的删除 SELECT实现数据的查询. 第二:增(insert) 1.插入完整的数 ...
- Python编程核心内容 ---- Function(函数)
Python版本:3.6.2 操作系统:Windows 作者:SmallWZQ 截至上篇随笔<Python数据结构之四——set(集合)>,Python基础知识也介绍好了.接下来准备干 ...
- web手工项目04-测试报告的核心内容-HTTP请求和响应-fiddler工具进行抓包
回顾 登录功能测试(需求分析(输入分析,处理分析,输出分析),数据构造,编写用例) 测试点设计思路--扩展(相关业务,特殊角度-分支,异常,逆向) 流程图元素与画法(开始/结束,路径,数据,判定,步骤 ...
随机推荐
- 卸载重装vscode
最近工作需要长期用到python,但我的老电脑又实在拉不起pycharm那配置,干脆就用vscode了,但本来我的vscode是用来写c/c++的,安装配置一通乱搞,现在也不知道怎么配置回来了. 干脆 ...
- chrony时间同步软件介绍
本文分享自天翼云开发者社区<chrony时间同步软件介绍>,作者:刘****苏 chrony是网络时间协议NTP的通用实现,它可以将系统时钟和`NTP服务器同步.它支持在各种条件下包括间歇 ...
- C#+Selenium+Nunit实现Web自动化demo
1.新建Nunit工程 步骤如下: 打开Rider选择图示选项 使用Nuget安装对应库 2.编写代码 代码如下: using NUnit.Framework; using OpenQA.Seleni ...
- Spring Cloud Bus服务总线
一.Spring Cloud Bus是用轻量的消息代理将分布式的节点连接起来,可以用于广播配置文件的更改或者服务的监控管理,也就是消息总线可以为微服务做监控,也可以实现应用程序之间相互通信,Sprin ...
- Go 语言的数据类型转换有哪些?
当不同的数据类型相互操作的时候,就需要类型转换,Go 的数据类型转换还是比较简单的. 数据类型转换包含显式和隐式两类,隐式的一般是大的数据类型到小的类型进行转换,不会有精度丢失的问题.否则就需要进行显 ...
- Apache Druid RCE漏洞复现及修复(CVE-2023-25194)
Apache Druid RCE漏洞复现及修复(CVE-2023-25194) 2023-03-16 声明:本文分享的安全工具和项目均来源于网络,漏洞环境本地搭建,仅供安全研究与学习,如用于其他用途, ...
- Spring Bean元数据体系与Spring容器
>>>点击去看B站配套视频<<< 系列文章目录和关于我 1. 从一个例子开始 小陈申请加盟咖啡店后,小陈收到总部寄来的<开店规格单>.这份文件允许每家分 ...
- Octotree插件 - 可以列出github项目的目录结构
Octotree - GitHub code tree
- Java三大特性 封装、继承、多态
封装 概念: 封装指的是将类的某些信息隐藏在类内部,不允许外部程序直接访问,只能通过该类提供的方法来实现对隐藏信息的操作和访问. 封装实现的步骤: 1.修改属性的可见性来显示属性的访问,一般设为pri ...
- 【BUG】Message = “无法加载一个或多个请求的类型。有关更多信息,请检索 LoaderExceptions 属性。“, StackTrace = “ 在 System.Reflection.
环境: Visual Studio 2019 C#项目遇到这种情况时,是因为有多个依赖出了问题(也可能是只有一个但被误报成多个),此时点开"查看详细信息",可以快速监视Except ...