![](https://img-blog.csdnimg.cn/20201225155230854.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
尚硅谷Mysql高级
文章平均质量分 52
mysql高级部分
纵使相见已无言
跌跌撞撞
展开
-
尚硅谷Mysql高级day12(p54-62)
今天是2021-1-10。 一。表锁 1.偏向于MyISAM引擎,开销小,加锁快,发生锁冲突的概率较高。不会产生死锁,加锁的粒度较大,所以并发效率也较低 2.**show open tables;**查看所有库的锁 3.lock table 表名 read/write,给表添加读锁或者写锁 4.会话s1对book表加了读锁以后。s1可以查询book表的数据,不能修改book表的数据,并且也不能对s1会话中的其他表进行任何操作。此时s2可以操作其他没有加锁的表,也可以查询book表的数据,但是如果去更新boo原创 2021-01-10 21:00:40 · 67 阅读 · 0 评论 -
尚硅谷Mysql高级day11(p53)
今天是2021-1-9。 一。锁的简单入门 1.读锁:读锁又称为共享锁,简称S锁,顾名思义,共享锁就是多个事务对于同一数据可以共享一把锁,都能访问到数据,但是只能读不能修改。 2.写锁又称为排他锁,简称X锁,顾名思义,排他锁就是不能与其他所并存,如一个事务获取了一个数据行的排他锁,其他事务就不能再获取该行的其他锁,包括共享锁和排他锁,但是获取排他锁的事务是可以对数据就行读取和修改。 ...原创 2021-01-09 22:22:20 · 59 阅读 · 1 评论 -
尚硅谷Mysql高级day10(p49-52)
今天是2021-1-6 一。group by子句优化 本质是先排序再分组,与order by的优化相差不大,子句中的字段也是最好按照最左前缀排列。 尽可能的把过滤条件放到where子句中,因为where比having先执行 二。mysql慢查询日志 1.mysql提供的日志记录,慢查询日志用来记录在 MySQL 中执行时间超过指定时间的查询语句。通过慢查询日志,可以查找出哪些查询语句的执行效率低,以便进行优化 2.可以通过 log-slow-queries 选项开启慢查询日志。通过 long_query原创 2021-01-06 22:39:34 · 60 阅读 · 0 评论 -
尚硅谷Mysql高级day9(p48)
今天是2021-1-5。 一。order by子句优化 注:Mysql能为查询与排序使用相同的索引 order by子句满足以下情况会使用索引排序: 1.order by子句中的字段满足联合索引的最左前缀匹配原则 2。order by子句与where子句使用的字段组合起来满足联合索引的最左前缀匹配原则 order by 子句使用文件排序: 1.双路排序:在MySQL4.1之前使用双路排序,就是两次磁盘扫描,得到最终数据。读取行指针和order by列,对他们进行排序,然后扫描已经排好序的列表,按照列表中的值原创 2021-01-05 23:55:13 · 46 阅读 · 0 评论 -
尚硅谷Mysql高级day8(p46-47)
今天是2021-1-4。 一。小表驱动大表 小表驱动大表,即用小的数据集驱动大的数据集。 1.Exist关键字: select … from table_name where exists(subquery) 将外层查询的数据放到子查询中做条件验证,根据验证结果–true/false来决定外层查询的结果集是否保留。 2.in关键字: select … from table_name where x in(多个值或者一个subquery) 查看一行记录,如果in中的结果包含这行记录中字段x的值,那么就保留这行原创 2021-01-04 22:38:09 · 76 阅读 · 0 评论 -
尚硅谷Mysql高级day7(p34-45)
今天是2021-1-3。 一。索引知识回顾 看到p44才想起来,索引的两大功能查找数据与排序数据,以前都是想当然以为order by子句中的字段如果不是联合索引的最左列就使用不到,但是也没注意没有出现using filesort。直到看了p44加上自己动手试了才算想通,order by子句在mysql匹配索引的时候也会被算进去,因为mysql从左向右匹配,如果没遇到范围查询那么字段都会算进去: 联合索引(total,used,residue ) 1.explain select used from t_s原创 2021-01-03 21:42:03 · 72 阅读 · 0 评论 -
尚硅谷Mysql高级day6(p31-33)
今天是2021-1-2。 一。两表sql优化 两表连接查询时,建索引一定要建在从表上。因为外连接条件用于确定如何从"从表"中搜索行,而主表则是返回所有记录–即全表扫描,比如左连接,那么就要给右表的连接条件字段建索引,右连接则给左表的连接条件字段建索引。 二。join查询的原理 连接查询时,主表即是驱动表 A,从表为被驱动表 B: 1.简单嵌套循环连接 简单来说,就是每读取一行A表的数据,就要全表扫描B与之匹配 2.索引嵌套循环连接 当我们为被驱动表的连接条件字段建立了索引时,每读取一行A表的数据,通过为B表原创 2021-01-03 00:39:45 · 103 阅读 · 0 评论 -
尚硅谷Mysql高级day5(p29-30)
今天是2021-1-1。 一。explain-extra 包含不适合在其他列中显示但十分重要的额外信息,包含以下信息: 1.Using filesort:如果order子句中出现的字段没有使用到索引,那么mysql会使用一个外部的索引排序来排序这些字段的值--可以说是重新扫描整张表来排序,而不是我们可能建立好的索引来对字段排序 2.Using temporary:这里有很多因素,比如:排序、分组时涉及到的字段未使用索引;多表连接查询时,查询条件中没有使用最开始的基表中的字段作为查询条件,即多个表中,有与最原创 2021-01-01 22:54:39 · 152 阅读 · 0 评论 -
尚硅谷Mysql高级day4(p24-28)
今天是2020-12-30。 一。explain-type 1.显示查询使用了何种类型,从最好到最差依次是:system,const,eq_ref,ref,range,index,all 2.需要保证查询至少到range级别,最好能到ref 3.system:表只有一行记录,等于是系统表,是const类型的特例,平时不会出现 4.const:表示通过一次索引就找到了数据,用于比较主键或者唯一索引。比如我们将主键置于where子句中,mysql就能将查询转为一个常量 5.eq_ref:唯一性索引扫描,对于每个原创 2020-12-30 23:17:57 · 66 阅读 · 0 评论 -
尚硅谷Mysql高级day3(p21-23)
今天是2020-12-29 explain关键字,写在sql语句最前面,执行sql语句后可以显示该语句的执行情况 一。explain-id select查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序,有如下情况: 1.id相同,执行顺序由上至下 2.如果使用了子查询,id不同时,id越大的越先执行 3.id有相同有不同,还是越大的越先执行,如果是相同id则从上到下顺序执行 二。explain-select_type 1.simple:最简单的查询,不包括子查询和union 2.pr原创 2020-12-29 21:53:03 · 71 阅读 · 0 评论 -
尚硅谷Mysql高级day2(p7-20)
今天是2020-12-27。 一。主要配置文件 1.log-bin:用于主从复制 2.log-error:默认关闭,用于记录严重的警告和错误信息,以及每次启动和关闭的详细信息等 3.log:默认关闭,记录查询的sql语句 4.数据文件:frm文件–存放表结构,myd文件-存放表数据,myi–存放表的索引 二。系统逻辑结构 1.连接层:jdbc等,引入了连接池的概念 2.sql处理层:sql接口–存储过程、视图等,语句转换器,语句优化器、缓存、缓冲区 3.可替换存储引擎层:innoDB,Myisam等 4.文原创 2020-12-27 20:20:29 · 86 阅读 · 0 评论 -
尚硅谷Mysql高级day1(p1-p6)
今天是2020-12-25。 在实习之前,也算是正式开始mysql的高级部分的学习了,尤其是在linux上的使用,所以下一步就是好好学linux。在学校都学过一点基础,但是工作中肯定是不够用的,所以好好学吧。 一。mysql下载注意 1.下载的时候,注意最好下GA版的,意为稳定发布版。 2.由于我已经用docker安装了mysql8,所以安装过程就不记录了,以后如果有需要再学习纯安装过程,不过说实话,docker太方便了,也真没必要去自己手动慢慢安装,我现在几乎什么软件都去找docker部署的教程。 二。d原创 2020-12-25 23:46:32 · 104 阅读 · 0 评论