
MySQL
敬畏自然.
这个作者很懒,什么都没留下…
展开
-
数据库三大范式
范式可以理解为一张数据表的表结构,符合的设计标准的级别。使用范式的根本目的是:1)减少数据冗余,尽量让每个数据只出现一次。2)保证数据一致性缺点是获取数据时,需要通过Join拼接出最后的数据。完全函数依赖:(A,B)可以推出C,A不可以推出C,B不可以推出C,那么C完全函数依赖于(A,B)。部分函数依赖:(A,B)可以推出C,A可以推出C或B可以推出C,那么C部分函数依赖于(A,B)。传递函数依赖:A可以推出B,B可以推出C,但C不能推出A,那么C传递函数依赖于A。第一范式:字段不可分割。原创 2020-08-09 20:55:04 · 373 阅读 · 0 评论 -
MySQL之锁
是什么协调多个进程或线程并发访问共享资源的的机制。锁的种类按照对数据的操作类型可分为:1.读锁:共享锁,对于同一份数据,多个读操作可以同时进行,互不影响。2.写锁:排它锁,当前操作没有完成时,会阻断其它的读锁、写锁。按照粒度可分为:1.表锁:偏向MyISAM存储引擎、开销小、加锁快,不会出现死锁、锁定粒度大、发生锁冲突的概率最高、并发度最低。2.行锁:偏向InnoDB存储引擎、开销大、加锁慢、会出现死锁、锁定粒度最小、发生锁冲突的概率最低、并发度最高。还有一种锁叫间隙锁:当使用范围条件而不原创 2020-06-11 09:16:59 · 148 阅读 · 0 评论 -
MySQL之数据库事务
事务是什么事务是由一组SQL语句组成的逻辑处理单元。事务的四大属性1.原子性(Atomicity):事务是原子操作单元,其对数据的修改,要么全都执行,要么全都不执行。2.一致性(Consistent):在事务开始和完成时,数据都必须保持一致状态。这意味着所有相关的数据规则都必须应用于事务的修改,以保持数据的完整性。事务结束时,所有的内部数据结构(如B树索引或双向链表)也都必须是正确的。3.隔离性(Isolation):数据库系统提供一定的隔离机制,保证事务在不受外部并发操作影响的“独立”环境执行。原创 2020-06-11 07:44:00 · 127 阅读 · 0 评论 -
SQL优化分析之show profiles的使用
是什么是MySQL提供用来分析当前会话中语句执行的资源消耗情况。默认情况下,参数处于关闭状态,并只保存最近15次的运行结果。怎么用分析步骤:1.查看当前的MySQL版本是否支持。2.开启功能,默认是关闭,使用前需要开启。3.查看结果:show profiles;4.诊断SQL:show profile cpu,block io for query SQL_id。5.常用的需要优化的诊断结果:converting HEAP to MyISAM:查询结果太大,内存不够用了,查询数据往磁原创 2020-06-10 16:01:15 · 384 阅读 · 1 评论 -
MySQL之EXISTS的使用
EXISTSselect … from table where exists (subquery):将主查询的数据,放到子查询中做条件验证,根据验证结果(true或false)来决定主查询的数据结果是否得以保留。EXISTS与IN的使用情景:原创 2020-06-10 14:00:10 · 1713 阅读 · 0 评论 -
MySQL优化之索引优化
频繁作为查找条件的字段应该建索引。频繁更新的字段不应该建索引,因为更新数据的同时,还需要更新索引,效率低。单表索引优化:不要在需要范围查找的字段上建索引,会导致索引失效。两表索引优化:左连接在右表的连接字段上建立索引;右连接在左表的连接字段上建立索引。join优化:尽可能减少join语句中NestedLoop(嵌套循环)的循环总次数。用小的结果集驱动大的结果集。优先优化NestedLoop的内层循环。保证join语句中被驱动表上join条件字段已经被索引。当无法保证被驱动表的join条件字原创 2020-06-09 21:41:41 · 143 阅读 · 0 评论 -
MySQL优化之索引失效的原因
索引失效原因索引字段作为范围查找的条件时。范围字段之后的索引全部失效。索引字段作为查找条件时,没有按照建立索引的字段顺序。使用!=或<>的时候无法使用索引会导致全表扫描。使用 is null或 is not null 也无法使用索引。使用like时,通配符(%)在左边或在两边时,索引失效,会变成全表扫描。字符串不加单引号索引失效。少用or,用它连接时会索引失效。如何避免索引失效不要将索引字段作为范围查找的条件。尽可能索引字段全值匹配。最佳左前缀法则:如果索引了多个列,要遵守原创 2020-06-09 21:39:12 · 237 阅读 · 0 评论 -
MySQL优化之explain的使用
explain是什么使用关键字explain可以模拟MySQL优化器是如何执行SQL查询语句的,从而分析查询语句或是表结构的性能瓶颈。怎么用explain + SQL语句能干嘛1.根据id字段查看表的读取顺序:id相同从上往下顺序执行。i如果是子查询,id序号会递增,id值越大优先级越高,越先被执行。derived:衍生。图片中的含义表示id=2的查询结果为衍生的虚表,用于其他查询的引用。总结:id如果相同,可以认为是一组,从上往下顺序执行;在所有组中,id值越大,优先级越高,越先执行。原创 2020-06-09 15:36:42 · 175 阅读 · 0 评论