美文网首页
2019-11-10 我想让自己每天过的开心一些

2019-11-10 我想让自己每天过的开心一些

作者: 勒昂浪 | 来源:发表于2019-11-11 10:13 被阅读0次

我想借简书记录下我生活让我觉得还有点意义的每一刻。

SQL必知必会读书笔记(11:00 - 15:30)

SQL基础语法篇

SQL的学习阶段:SQL基础语法、SQL性能优化、主流数据库的使用和实践

  • SQL语句按照功能划分分为四种类型
    • DDL(Data Definition Language)数据定义语言:可以创建、删除和修改数据库和表结构
    • DML(Data Manipulation Language)数据操作语言:可以增加、删除、修改数据表中的记录
    • DCL(Data Control Language)数据控制语言:定义访问权限和安全级别
    • DDL(Data Query Language)数据查询语言:可以进行语句查询

为了可读性,约定的两个规范(SQL对大小写的区分因不同的数据库系统而异):

  • 表明、表别名、字段名、字段别名等都小写,如 hero
  • SQL保留字、函数名、绑定变量等都大写,如 SELECT
  • 数据库字段名推荐,下划线命名,如:role_main

几个概念:

  • DBMS (DataBase Management System)数据库管理系统(如Oracle、MySQL):DBMS = 多个数据库(DB)+ 管理程序
  • DB(DataBase)数据库:DB可理解成多张数据表
  • DBS(DataBase System)数据库系统 = 数据库管理系统 + 数据库管理人员DBA

关于SQL和NoSQL

  • SQL:关系型数据库查询语句
  • NoSQL:not only SQL,包括键值型(Redis)、文档型(MongoDB)、搜索引擎型(ES)等等。
    • NoSQL的优点:查找速度快
    • NoSQL的缺点:不够灵活,不能根据条件筛选过滤

SQL在Oracle的执行过程


SQL在ORACLE中的执行过程.png

以下引用自极客时间 https://time.geekbang.org/column/article/101104

1.语法检查:检查 SQL 拼写是否正确,如果不正确,Oracle 会报语法错误。

  1. 语义检查:检查 SQL 中的访问对象是否存在。比如我们在写 SELECT 语句的时候,列名写错了,系统就会提示错误。语法检查和语义检查的作用是保证 SQL 语句没有错误。
  2. 权限检查:看用户是否具备访问该数据的权限。
  3. 共享池检查:共享池(Shared Pool)是一块内存池,最主要的作用是缓存 SQL 语句和该语句的执行计划。Oracle 通过检查共享池是否存在 SQL 语句的执行计划,来判断进行软解析,还是硬解析。那软解析和硬解析又该怎么理解呢?在共享池中,Oracle 首先对 SQL 语句进行 Hash 运算,然后根据 Hash 值在库缓存(Library Cache)中查找,如果存在 SQL 语句的执行计划,就直接拿来执行,直接进入“执行器”的环节,这就是软解析。如果没有找到 SQL 语句和执行计划,Oracle 就需要创建解析树进行解析,生成执行计划,进入“优化器”这个步骤,这就是硬解析。
  4. 优化器:优化器中就是要进行硬解析,也就是决定怎么做,比如创建解析树,生成执行计划。
  5. 执行器:当有了解析树和执行计划之后,就知道了 SQL 该怎么被执行,这样就可以在执行器中执行语句了。

SQL在MySQL中的执行过程


SQL在MySQL中的执行过程.jpg
  1. 查询缓存:Server 如果在查询缓存中发现了这条 SQL 语句,就会直接将结果返回给客户端;如果没有,就进入到解析器阶段。需要说明的是,因为查询缓存往往效率不高,所以在 MySQL8.0 之后就抛弃了这个功能。
  2. 解析器:在解析器中对 SQL 语句进行语法分析、语义分析。
  3. 优化器:在优化器中会确定 SQL 语句的执行路径,比如是根据全表检索,还是根据索引来检索等。
  4. 执行器:在执行之前需要判断该用户是否具备权限,如果具备权限就执行 SQL 查询并返回结果。在 MySQL8.0 以下的版本,如果设置了查询缓存,这时会将查询结果进行缓存。

如何在 MySQL 中对一条 SQL 语句的执行时间进行分析

首先我们需要看下 profiling 是否开启,开启它可以让 MySQL 收集在 SQL 执行时所使用的资源情况

mysql> select @@profiling;

profiling=0 代表关闭,我们需要把 profiling 打开,即设置为 1:

mysql> set profiling=1;

然后我们执行一个 SQL 查询(你可以执行任何一个 SQL 查询):

mysql> select * from wucai.heros;

查看当前会话所产生的所有 profiles:


show Profiles.png

你会发现我们刚才执行了两次查询,Query ID 分别为 1 和 2。如果我们想要获取上一次查询的执行时间,可以使用:

mysql> show profile;

当然你也可以查询指定的 Query ID,比如:

mysql> show profile for query 2;

结果相同,如下:


show profile.png
注:以上图片均来自极客时间 《SQL必知必会》

刚开始学自由泳好嗨(16:30 - 18:00)

  • 第一次学自由泳,由于之前蛙泳了一阵子,水性稍微好点了,整体感觉学习自由泳没有第一次开始学蛙泳那么傻了。
  • 在水池边练习鞭腿1h,感觉自由泳更练习腿部力量
  • 抓着板子游,刚开始25米自由泳要休息一下,后面累了每15米就要休息一会。
  • 比起蛙泳,腿更容易抽筋更容易麻。
  • 注意点:刚开始练习,先练鞭腿,大腿带动小腿,身体发力,带动四肢,脚面绷直,脚内扣,内八字。
  • 由于认真看了知乎教程,认真的练习鞭腿,虽然刚开始,但是感觉比其他开始学自由泳的游的快一些,好多姿势不标准的,拿小腿打水的,教程里严重指出是错误的了,看看别人的经验总结还是蛮管用的,感谢知乎,感谢梦觉老师,感谢李开源老师

相关文章

  • 2019-11-10 我想让自己每天过的开心一些

    我想借简书记录下我生活让我觉得还有点意义的每一刻。 SQL必知必会读书笔记(11:00 - 15:30) SQL基...

  • 2019-12-08

    每天都是忙碌的,这感觉很好,我想让自己更忙碌一些,开心地过每一个平静的日子,鲜花与海洋,芒果加牛奶,爱与自...

  • ♬ 费力讨好世界,不如先取悦自己

    01 是的,我来到这个世界,就是想让自己每天都开心,想让自己的生命绚丽地绽放,想让自己成为自己人生的主角。 所以,...

  • 每天让自己开心快乐

    我是一个特别爱笑,什么事都能让自己开心快乐的傻女人,记得一位唐朝诗人说过这样一句话,大其心,容天下之物;虚其心,爱...

  • 让自己每天开心

    让自己每天开心的方法:[小鼓掌] 1.关注自己,别管别人,把注意力放到自己的事上,比如做顿美食、化个妆、看一本特别...

  • 每天让自己开心点

    1.今天看到消息说下周复课。虽然复课后每天上下班很辛苦,但是能复课,还是很开心。让我开心。 2.儿子机票买了,月底...

  • 我为什么写这个?我如何选相机?我的购买途径?

    首先说一下我为什么要写这个 一·感觉现在的生活里缺少一些让自己激动开心的东西,我想培养一些让自己开心喜欢的兴趣爱好...

  • 2018-10-17

    我想让自己变得简单开心 也想让我爱的人都开心

  • 0417-晨读《我的情绪为何总被他人左右》

    我平时非常注意控制情绪,低落时想一些美好的事,让自己开心积极起来;生气时心里多想想自己哪里做的不够的,先反思,过一...

  • 现在的任务就是让自己每天都过的开心

    凌晨两点半左右醒来便不再困了,就开始听书,听到大概近4:00钟才睡,因为这周儿子休假所以我也睡到自然醒。早饭后听到...

网友评论

      本文标题:2019-11-10 我想让自己每天过的开心一些

      本文链接:https://www.haomeiwen.com/subject/fqlabctx.html