Mysql数据库学习笔记

基础

查询

  • 等值查询、范围查询、或和查询
  • 分页查询
  • 聚合查询
  • 表连接查询(全连接,左连接,右连接)
    我们把tableA看作左表,把tableB看成右表,那么INNER JOIN是选出两张表都存在的记录:
inner-join

LEFT OUTER JOIN是选出左表存在的记录:

left-outer-join

RIGHT OUTER JOIN是选出右表存在的记录:

right-outer-join

FULL OUTER JOIN则是选出左右表都存在的记录:

full-outer-join

事务隔离

mysql的事务隔离默认是Repeatable Read隔离
Repeatable Read隔离保证了一个事务内多次查询结果一致。
为了保持查询结果一致,会引出新增数据冲突。
参考:https://www.liaoxuefeng.com/wiki/001508284671805d39d23243d884b8b99f440bfae87b0f4000/001540475174923bc4157157ae547769d6933b9d66bc815000

锁分析

分析MySQL/InnoDB的加锁规则,需要以下前置条件:

  • 数据的存储格式 (堆组织表 vs 聚簇索引表);并发控制协议 (MVCC vs Lock-Based CC);Two-Phase Locking;数据库的隔离级别定义 (Isolation Level)
  • SQL本身的执行计划 (主键扫描 vs 唯一键扫描 vs 范围扫描 vs 全表扫描)
  • 数据库本身的一些实现细节 (过滤条件提取;Index Condition Pushdown;Semi-Consistent Read)
  • 死锁产生的原因及分析的方法 (加锁顺序不一致;分析每个SQL的加锁顺序)

查询优化

  1. 数据表的结构设计和数据表的查询方式(等值查询、范围查询等等),数据表的预期数量值
  2. 数据库架构优化

hash索引场景

适用于等值查询。
比如=、in()、<=>。不支持任何范围查询。

分布式表

唯一ID自增要求

要求:

  • 实现了全局唯一ID
  • 不影响业务数据库的扩展
  • 获取ID有容灾,单个表无法访问不影响全局

方案:

  • mycat分布式mysql中间件

方案原理:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、MySQL架构与历史 A.并发控制 1.共享锁(shared lock,读锁):共享的,相互不阻塞的。 2.排...
    阿休阅读 4,697评论 0 37
  • Mysql概述 数据库是一个易于访问和修改的信息集合。它允许使用事务来确保数据的安全性和一致性,并能快速处理百万条...
    彦帧阅读 13,721评论 10 460
  • 本文是我自己在秋招复习时的读书笔记,整理的知识点,也是为了防止忘记,尊重劳动成果,转载注明出处哦!如果你也喜欢,那...
    波波波先森阅读 6,111评论 1 43
  • 一、MySQL架构与历史 A.并发控制 1.共享锁(shared lock,读锁):共享的,相互不阻塞的 2.排他...
    ZyBlog阅读 19,875评论 3 177
  • 今天看到一位朋友写的mysql笔记总结,觉得写的很详细很用心,这里转载一下,供大家参考下,也希望大家能关注他原文地...
    信仰与初衷阅读 4,761评论 0 30