Mysql
今天你学习了么
这个作者很懒,什么都没留下…
展开
-
Mysql 查询性能优化
1. 查询优化基本概述在Mysql 基础架构中提到Mysql整体由服务层和引擎组成,服务层涵盖mysql的大多数核心服务功能,所有跨存储引擎的功能都在这一层实现,包括存储过程,触发器,视图等,以及所有的内置函数,而存储引擎层负责数据的存储和提取;一条sql查询语句按下面几步执行客户端发送一条查询给服务器。服务器先检查查询缓存,如果命中了缓存,则立刻返回存储在缓存中的结果。否则 进入下一阶段服务器端进行SQL解析、预处理,再由优化器生成对应的执行计划MySQL根据优化器生成的执行计划,调用存储引原创 2020-12-29 14:32:39 · 588 阅读 · 0 评论 -
Mysql 索引优化
1. 创建高性能索引正确的创建和使用索引是实现高性能查询的基础MySQL优化(5):索引失效分析、in与exists使用场合 - 湮天霸神666 - 博客园① 全值匹配我最爱② 最左前缀要遵循查询从索引的最左列开始(带头大哥不能死)不能跳过索引中的列(中间兄弟不能断)③ 不在索引列上做任何的操作导致索引失效而转向全表扫描④ 范围之后全失效存储引擎不能使用索引中范围条件右边的列age用到了,用于range操作,确定范围pos用不到⑤ 尽量少用"*"尽量使用覆盖索引原创 2020-12-28 11:15:38 · 171 阅读 · 0 评论 -
Mysql 锁理论
MySQL 锁机制(上) – 全局锁与表级锁MySQL 锁机制(下) – 细说 InnoDB 行锁(记录锁、间隙锁与临键锁)1. 概述数据库锁设计的初衷是为了处理多用户共享资源时的并发问题;Mysql不同的存储引擎支持不同的锁机制,所有的存储引擎都以自己的方式实现了锁机制,服务层完全不了解存储引擎中的锁的实现MyISAM和MEMORY存储引擎采用的是表级锁BDB存储引擎采用的是页面锁,但也支持表级锁InnoDB存储引擎支持行级锁,也支持表级锁,默认情况下使用的是行级锁2. 全局锁2.1原创 2020-12-27 11:00:47 · 177 阅读 · 0 评论 -
Mysql ACID
ACID的实现Atomicity 原子性Consistency 一致性Isolation 隔离性Duration 持久性1. 原子性1.1 基本概述一个事务中的操作要么全部成功,要么全部失败;所以保证原子性的关键点在于如何在事务执行失败的时候撤销之前执行了的操作1.2 通过undo log实现原子性undo log与redo log一起构成了Mysql事务日志,事务中每一次修改,InnoDB都会先记录对于的undo log记录与redo log记录的物理页的修改不同,undo log转载 2020-12-25 11:41:22 · 123 阅读 · 0 评论 -
Mysql 事务
1. 概述事务就是要保证一组数据库操作,要么全部成功,要么全部失败在 MySQL 中,事务支持是在引擎层实现的:MySQL 是一个支持多引擎的系统,但并不是所有的引擎都支持事务,比如 MySQL 原生的 MyISAM 引擎就不支持事务,这也是 MyISAM 被 InnoDB 取代的重要原因之一1.2 事务的启动方式set autocommit=1,会开启自动提交,这个时候也可以使用显示启动事务语句,begin 或 start transaction。配套的提交语句是 commit,回滚语句是 ro原创 2020-12-24 21:28:17 · 169 阅读 · 1 评论 -
Mysql 日志系统
bin-log & redo-log & undo log1. 避免从删库到跑路 - bin log怎么避免从删库到跑路 – 详解 mysql binlog 的配置与使用1.1 什么是bin logbinlog 即二进制日志,他记录了引起或可能引起数据库改变事件,包括事件发生的时间、开始位置、结束位置等信息,select、show 等查询语句不会引起数据库改变,因此不会被记录在 binlog 中对于事务的执行,只有事务提交时才会一次性写入 binlog,对于非事务操作,则每次语原创 2020-12-24 13:27:37 · 153 阅读 · 0 评论 -
Mysql 基础架构
基础架构:一条SQL查询语句是如何执行的?日志系统:一条SQL更新语句是如何执行的?1. 概述mysql可以分为Service层和存储引擎层Service层(上图中间的一层)涵盖mysql的大多数核心服务功能,所有跨存储引擎的功能都在这一层实现,包括存储过程,触发器,视图等,以及所有的内置函数(如日期,时间,数字和加密函数等)存储引擎层(插件式)负责数据的存储和提取,支持InnoDB,MyISAM,默认使用InnoDB,可以在建表的时候指定存储引擎2. 一条sql查询语句是怎么执行的①原创 2020-12-24 11:24:46 · 328 阅读 · 0 评论 -
Mysql 执行计划
1. 查询优化步骤观察,至少跑一天,看生产的慢sql情况开启慢查询日志,设置阙值,比如超过5分钟就是慢查询,并把他抓取出来explain+慢查询分析Show profile查询sql在mysql服务器中的执行细节和生命周期情况运维经理或DBA,进行sql数据库服务器的参数调优2. 性能分析 EXPLAIN执行计划使用explain关键字可以模拟优化器(服务层)执行sql查询语句,从而知道Mysql是如何处理SQL语句的,分析你的查询语句或者表结构的性能瓶颈| id | select_ty原创 2020-09-14 20:25:02 · 1295 阅读 · 0 评论 -
MySQL 索引模型
1. 常见索引模型1.1 什么是索引MySQL索引原理及慢查询优化索引是排好序的快速查找数据结构,索引的目的在于提高查询效率,可以类比字典,如果要查“mysql”这个单词,我们肯定需要定位到m字母,然后从下往下找到y字母,再找到剩下的sql有了这样的字典我们就可以避免全表扫描从而提高查找效率优势提高了数据检索的效率,降低了数据库的IO成本降低了数据排序的成本,降低了CPU的消耗劣势实际上索引也是一张表,该表保存了主键和索引字段,并指向实体表的记录,所以索引也要占用空间少量数据,频繁原创 2020-09-14 19:50:24 · 368 阅读 · 0 评论 -
正确理解mysql中的null
如果找不到数据会返回empty set而不是返回null,只有查询的数据被指定为null时才会返回null1. null表示未知如果要判断一个字段是否为null,应该使用is null关键字SELECT * FROM TABLE WHERE USER_AGE = NULL ❌SELECT * FROM TABLE WHERE USER_AGE IS NULL ????♂️这是因为null表示未知,一个未知的东西必然不知道是否和一个值相等2. null和not inSELECT * FROM原创 2020-07-16 10:00:16 · 406 阅读 · 0 评论 -
MYSQL的日期处理函数
1. to_days()to_days()函数返回一个年份0开始到参数时间的天数,可以使用这个函数处理很多问题1⃣️ 查询当天的所有数据SELECT * FROM 表名 WHERE to_days(时间字段名) = to_days(now());2⃣️ 查询昨天的数据SELECT * FROM 表名 WHERE TO_DAYS(NOW()) - TO_DAYS(时间字段名) = 13⃣️ 查询未来第n天的数据//当n为负数时,表示过去第n天的数据SELECT * FROM 表名WHERE原创 2020-07-14 15:00:34 · 439 阅读 · 1 评论 -
SQL语句执行顺序
Mysql----SQL查询语句执行顺序(7) SELECT (8) DISTINCT <select_list>(1) FROM <left_table>(3) <join_type> JOIN <right_table>(2) ON <join_condition>(4) WHERE <where_con...转载 2020-04-07 21:55:32 · 1500 阅读 · 1 评论 -
数据库 - 范式
范式就是一张数据表的表结构所符合的某种设计标准的级别1NF符合1NF的关系中的每个属性都不可再分,一范式是关系数据库的基础,但字段是否真的不可拆分,根据你的设计目标而定如下就不符合1NF1NF是所有关系型数据库的最基本要求只满足1NF会存在一些问题,以下表为例① 数据冗余过大: 每一名学生的学号、姓名、系名、系主任这些数据重复多次。每个系与对应的系主任的数据也重复多次② 插入异...转载 2020-03-19 21:58:19 · 250 阅读 · 0 评论 -
数据库 - 视图
视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成1. 基本概念我理解的就是将一条select语句进行了封装,封装的结果就是一个视图,在使用者看来视图就是一个表(数据来源于里面select语句查询出来的结果),但...原创 2020-03-19 18:38:42 · 148 阅读 · 0 评论 -
数据库 - TCL - 事务
1. 事务的四大特性事务具有4个基本特征,分别是:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Duration),简称ACID① 原子性事务的原子性是指事务必须是一个原子的操作序列单元。事务中包含的各项操作在一次执行过程中,只允许出现两种状态之一,要么都成功,要么都失败任何一项操作都会导致整个事务的失败,同时其它已经被执行的操作都将...原创 2020-03-19 18:01:20 · 150 阅读 · 0 评论 -
数据库 - DDL
DDL语言:Data Define Language数据定义语言,用于对数据库和表的管理和操作1. 库的管理创建数据库CREATE DATABASE stuDB;CREATE DATABASE IF NOT EXISTS stuDB;删除数据库DROP DATABASE stuDB;DROP DATABASE IF EXISTS stuDB;2. 表的管理2.1 创建表语法...原创 2020-03-19 17:56:28 · 144 阅读 · 0 评论 -
数据库 - DQL - 联合查询
联合查询说明:当查询结果来自于多张表,但多张表之间没有关联,这个时候往往使用联合查询,也称为union查询语法:select 查询列表 from 表1 where 筛选条件 unionselect 查询列表 from 表2 where 筛选条件 特点:1. 多条待联合的查询语句的查询列数必须一致,查询类型、字段意义最好一致,因为最后结果集的列名和表1的一致2. unio...原创 2020-03-19 17:22:23 · 127 阅读 · 0 评论 -
数据库 - DQL - 分页查询
分页查询应用场景:当页面上的数据,一页显示不全,则需要分页显示分页查询的sql命令请求数据库服务器——>服务器响应查询到的多条数据——>前台页面语法:select 查询列表from 表1 别名join 表2 别名on 连接条件where 筛选条件group by 分组having 分组后筛选order by 排序列表limit 起始条目索引,显示的条目数#①起...原创 2020-03-19 17:13:50 · 124 阅读 · 0 评论 -
数据库 - DQL - 子查询
子查询说明:当一个查询语句中又嵌套了另一个完整的select语句,则被嵌套的select语句称为子查询或内查询,外面的select语句称为主查询或外查询分类:按子查询出现的位置进行分类:|--select后面 要求:子查询的结果为单行单列(标量子查询)|--from后面 要求:子查询的结果可以为多行多列|--where或having后面 要求:子查询的结果必须为单列 |--单行...原创 2020-03-19 17:10:21 · 194 阅读 · 0 评论 -
数据库 - DML
DML(Data Manipulation Language)数据操纵语言:insert update delete 对表中的数据的增删改1. 插入语法:插入单行:insert into 表名(字段名1,字段名2 ,...) values (值1,值2,...);插入多行:insert into 表名(字段名1,字段名2 ,...) values (值1,值2,...),(值1,...原创 2020-03-19 14:12:17 · 132 阅读 · 0 评论 -
事务的四大特性
1. 事务的四大特性事务具有4个基本特征,分别是:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Duration),简称ACID① 原子性事务的原子性是指事务必须是一个原子的操作序列单元。事务中包含的各项操作在一次执行过程中,只允许出现两种状态之一,要么都成功,要么都失败任何一项操作都会导致整个事务的失败,同时其它已经被执行的操作都将...原创 2020-02-29 13:23:34 · 56307 阅读 · 3 评论 -
数据库 - DQL - 连接查询
连接查询又称多表查询,当查询语句涉及到的字段来自于多个表时,就会用到连接查询笛卡尔乘积现象:表1 有m行,表2有n行,结果=m*n行发生原因:没有有效的连接条件如何避免:添加有效的连接条件按功能分类: |--内连接: |--等值连接 |--非等值连接 |--自连接 |--外连接: |--左外连接 |--右外连接 |--全外连接 |--交叉连接1. 内...原创 2020-03-18 22:06:52 · 339 阅读 · 0 评论 -
数据库 - DQL - 分组查询
select 查询列表from 表名where 筛选条件order by 排序列表 [asc|desc];//升序,通过asc//降序,通过desc//也可以按照表达式排序特点:①排序列表可以是 单个字段、多个字段、函数、表达式、别名、列的索引,以及以上的组合②升序,通过asc 降序,通过desc...原创 2020-03-18 20:48:25 · 422 阅读 · 0 评论 -
数据库 - DQL - 条件查询
条件查询语法:select 查询列表from 表名where 筛选条件;select last_name,first_name from employees where salary>20000;按关系表达式筛选 > < >= <= = <>(不等于最好使用<>不使用!=)按逻辑表达式筛选 and or not(也可...原创 2020-03-18 20:35:47 · 442 阅读 · 0 评论 -
数据库 - DQL - 基础查询
DQL:Data Query Languge1. 基础查询select 查询列表 from 表名;特点:查询的结果集 是一个虚拟表select后面跟的查询列表,可以有多个部分组成,中间用逗号隔开例如:select 字段1,字段2,表达式 from 表;查询列表可以是:字段、表达式、常量、函数等① 查询单个字段 USE myemployees; SELECT `last_nam...原创 2020-03-18 20:09:26 · 167 阅读 · 0 评论 -
数据库 - 基础
DB: 数据库(database):存储数据的“仓库”。它保存了一系列有组织的数据DBMC: 数据库管理系统(Database Management System)。数据库是通过DBMS创建和操作的容器SQL: 结构化查询语言(Structure Query Language):专门用来与数据库通信的语言。1. MySQL服务的登录和退出方式一:通过dos命令mysql -h主机名 -P...原创 2020-03-18 19:36:44 · 192 阅读 · 0 评论