mysql
文章平均质量分 63
啦啦拉德玛西亚
这个作者很懒,什么都没留下…
展开
-
8.sql 执行顺序
sql执行顺序 (1)from (3) join (2) on (4) where (5)group by(开始使用select中的别名,后面的语句中都可以使用) (6) avg,sum… (7)having (8) select (9) distinct (10) order by 先对FROM子句中的两个表执行一个笛卡尔乘,此时生成虚拟表 virtual table 1(选择相对小的表做基础表) 然后是应用ON条件筛选器,将ON中的逻辑表达式将应用到 virtual table 1中的各个行,筛选出满原创 2021-04-19 17:43:01 · 89 阅读 · 0 评论 -
7.mysql join union
1.SQL JOIN 2.SQL UNION 操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集。 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。 SQL UNION 语法 SELECT column_name(s) FROM table_name1 UNION SELECT column_name(s) FROM table_name2 **注释:**默认地,UNION 操作符选原创 2021-04-19 17:42:27 · 75 阅读 · 0 评论 -
6.mysql 索引
1. 索引类型 1.1 联合索引 多个字段组个成一个索引,使用时遵循最左原则。 联合索引的查询??? 1.2单列索引 1.2.1 普通索引 可重复 空NULL 1.2.2唯一索引 不可重复 可有一个NULL 1.2.3主键索引 不可重复 不可NULL 没有定义自动选择一个索引作为主索引,没有符合条件的默认生成一个。 1.2.4全文索引 文本关键字查找 2. mysql数据落地文件形式 2.1MYISAM Frm:表的定义文件。 MYD:数据文件,所有的数据保存在这个文件中。 MYI:索引文件。 2.2原创 2021-04-19 17:41:50 · 68 阅读 · 0 评论 -
5.redo undo
1.使用场景 事务是持久性的,事务提交后先修改内存buffer,然后选择时机更新到磁盘。如果内存更新了,但是还没有来得及更新磁盘,就宕机了。那么怎么进行数据恢复?? 事务是一致性的,在执行过程中发生错误,数据怎么回滚?? begin; UPDATE `t_user` SET `name`='更新1' WHERE (`id`='4'); # -->写入 undo log UPDATE `t_user` SET `name`='更新2' WHERE (`id`='4'); # -->写入原创 2021-04-19 17:41:05 · 66 阅读 · 0 评论 -
4.mysql mvcc
1.使用场景 session1 session2 begin select * from t_user where id==1 # select 100 begin update t_user while id ==1 #update200 commit select * from t_user # select 100 commit 事务的默认隔离级别是RR(可重复读)。意思是session1的两次select 是一致的,就是说两次select原创 2021-04-19 17:33:42 · 106 阅读 · 0 评论 -
3.mysql 事务
1.事务特性 原子性:要么全部成功 要么全部失败 一致性:一个状态到另一个状态不存在中间状态。就是说执行过程中崩溃,已经修改的数据不会保存。 持久性:commit后永久有效 隔离性:事务间相互隔离,不受其他事务影响,内部状态对其他事务的是不可见的。 2.事务隔离级别: read uncommit:读取到未提交的数据 read commit:多次读取相同行数据不一致 repeatable read:多次读取有新行 serializable:串行读取,加锁,并发低。 脏数据:读取到为提交的数据 不可重复读:多次原创 2021-04-19 17:31:32 · 62 阅读 · 0 评论 -
2.mysql 锁 并发控制
1.读写锁 读锁(共享锁):并发读 写锁(互斥锁):互斥写/读 2.全局锁 flush table with read local 数据库中的所有表加锁,对于任何表的数据更新结构更新都将阻塞。用于数据库备份, 3.表锁 3.1显示加锁 LOCK TABLES t_user READ/WRITE; UNLOCK TABLES ; lock tables t1 read, t2 write; 命令,则其连接写 t1、读写 t2 的语句都会被阻塞。同时,加锁连接在执行 unlock tables 之前,也只能执原创 2021-04-19 17:29:20 · 102 阅读 · 0 评论 -
1.mysql逻辑架构
一.基础架构 1.连接层 连接层负责接受连接、协议解析、授权验证。 2.服务层 mysql核心层,负责sql语句的解析、优化、查询缓存。所有的跨引擎功能在这里实现:存储过程、触发器、视图。 3.存储引擎层 数据的存储和读取。上层通过API与其交互,屏蔽了引擎差异。 二.线程模型 1.no thread模式 所有连接在主线程处理,并发低。 2.one connection per thread 主线程接受连接,验证通过后,为连接分配一个工作线程。工作线程负责连接的sql语句分析、优化、执行。大量连接会导致原创 2021-04-19 17:27:38 · 153 阅读 · 1 评论 -
mysql必知必会读书笔记
本文是mysql必知必会读书笔记,主要记录书中介绍的sql语句需要注意的点。具体的sql语法及格式可参见:点击打开链接检索:select 得到的结果是未排序的 除非明确指明排序规则使用通配符* 检索数据时,可以检索到未命名的列,但是检索效率较低,应尽量在检索时指定列名。distinct 作用于所有检索列,而不是部分列。检索出来的行索引从0开始而不是1。完全限定名是为了联合查询时解决当两个表有相同...原创 2018-06-11 15:39:59 · 401 阅读 · 1 评论