MySQL精简笔记

  • 基础类型
    • bit,tinyint,smallint,int,bigint
    • fload,double(M:整数+小数的位数,D:小数的位数)
    • decimal,numeric(M,D)(正数)
    • char(255),varchar(64kb),text(64kb),mediumtext(16MB),blob(字节,64kb)
    • datatime(8),timestamp(4,70-38年)
  • 基础命令
    • 数据库
      • create if not exists database 库 set utf8mb4
      • drop if exists 库
      • show databases
      • create table 表(字段 类型)
      • drop table 表
      • show tables
      • desc 表
      • 新增列:alter table 表 add 字段 类型
      • 修改列:alter table 表 modify 字段 新类型
      • 修改列:alter table 表 change 旧字段 新字段 新类型
      • 删除列:alter table 表 drop column 字段
    • 行和列
      • 新增或替换:replace into 表(字段) values(值)
      • 仅新增:insert into 表(字段) values(值)
      • 有则不增:insert ignore 表(字段) values(值)
      • 导入文件:load data infile 路径 into table 表
      • delete from 表 where 条件
      • select 字段 from 表
      • update 表 set 字段1=x,字段2=y
  • 进阶查询
    • 去重:select distinct 字段 from 表
    • 排序:select * from 表 order by 字段 (ASC升/DESC降)
    • 条件:select * from 表 where 表达式
    • 分页:select * from 表 limit n / n,s / n offset s(s起始,n个数)
  • 聚合函数
    • COUNT
    • SUM
    • MAX
    • MIN
    • AVG
    • group by 字段 having 条件
  • 多表查询
    • 内连接:select 字段 from 表1 别名1 join 表2 别名2 on 条件
    • 内连接:select 字段 from 表1 别名1,表2 别名2 where 条件
    • 左连接:select 字段 from 表1 left join 表2 on 条件
    • 右外连接:select 字段 from 表1 right join 表2 on 条件
    • 子查询:(语句)别名
    • 合并查询:union(并集),union all(并集),intersect(交集,mysql不支持),in(交集),exists(交集合)
  • 数据库三范式
    • 表中的每个列都应该是不可分割的最小单元
    • 表中的每一列都完全依赖于主键
    • 每一列都直接依赖于主键,并且不传递依赖于其他列
  • 约束
    • 非空:not null
    • 唯一:unique
    • 默认:default
    • 主键:primary key 字段 auto-increment
    • 外键:foreign key
    • 检查:check (x>1 and x<3)
  • 索引
    • 底层原理

      • B树和B+树
      • B树:多路平衡查找树,叶子节点在同层,数据存在每个节点,节点中的键按照升序排序
      • B+树:在B树的基础上,数据只存在叶子节点,叶子节点之间相互连接
    • 创建索引

      • 主键,唯一,外键
      • create index 索引名 on 表(字段)
      • show index from 表
      • drop index 索引名 on 表
    • 索引类型

      • 数据结构:B+树索引、Hash索引、Full-text 索引(使用倒排索引)
      • 物理存储:聚簇索引(聚集索引)、二级索引(辅助索引)
      • 索引字段:主键索引、唯一索引、普通索引、前缀索引
      • 字段数量:单列索引、联合索引
    • 索引覆盖和回表查询

      • 索引覆盖:索引包括了查找的所有列,不需要回表查询
      • 回表查询:从二级索引获取到主键,再根据主键去聚簇索引查询数据
    • 创建原则
      在这里插入图片描述

    • 索引失效
      在这里插入图片描述

  • 事务
    • AICD

      • 原子性:要么全部完成,要么全部不做
      • 一致性:结果一致,A->B,A减B增,总量不变
      • 隔离性:不同事务互不干扰,也不可见
      • 持久性:执行完的数据保存到磁盘中
    • 脏读,不可重复读,幻读

      • 脏读:读未提交数据,因事务回滚而数据失效
      • 不可重读读:同一个数据,每次读的结果不一样
      • 幻读:旧数据没有改变,但是新插入的数据导致事务出现问题(快照读,MVCC只能看到数据的改变,看不到数据的插入)
  • 相关锁
    • 行锁:指对表中的某一行数据进行锁定,粒度最细,并发性能影响最小。
    • 表锁:指对整张表进行锁定
    • 间隙锁:索引范围中的“空隙”进行锁定,防止其他事务在这个范围内插入新数据。间隙锁用于解决幻读问题
  • 分析慢查询
    • 慢查询日志
      • slow_query_log=1(开启慢日志)
      • long_query_time=2(超过2s)
    • Skywalking,Prometheus,Arthas等工具
  • explain/desc(seleect信息)
    • 可能使用的索引:possible_keu
    • 命中索引:key
    • 索引长度:key_len
    • 优化建议:Extran(Using where/Index, condition)
    • 读取行数:rows
    • 索引等级:type

在这里插入图片描述

  • SQL优化
    • 使用集群

    • 分库分表

    • 表优化

      • 合适的数据类型
    • 索引优化

      • 索引要符合创建原则
    • SQL语句优化

      • select指定列
      • 尽可能的使用索引,避免索引失效
      • 多表连接要以小表为驱动
      • union all > union > or

在这里插入图片描述

  • MySQL的存储引擎
    • MyISAM(早期,表锁)
    • InnoDB(默认,事务,表行锁,外键)
    • MEMORY(内存,表锁)
  • 相关日志
    • 回滚日志:undo log(反向操作,原子性,一致性)
    • 重做日志:redo log(内存缓冲池,数据页16kb,持久性)
    • 二进制日志:bin log(DDL数据定义,DML数据操纵语句)
    • 中继日志:relay log(主从结构,同步数据)
    • 错误日志:error log
    • 慢查询日志:show query log
    • 一般查询日志:general log
  • MVCC(多版本并发控制,隔离性)
    • 针对修改操作:一行数据的隐藏字段(最近事务ID,回滚指针,隐藏主键)和undo log构成此数据的版本链

    • 针对读操作:生成ReadView,RC(读已提交)每次读都生成新的,RR(读未提交)只用第一次读生成的

      • ReadView:(活跃事务的ID集合,最小活跃事务ID,预分配事务ID,快照创建事务ID)
      • 根据ReadView到数据的版本链中比对:读取符合规则的(两种版本可读:当前事务中,非活跃的其它事务)

在这里插入图片描述

  • 集群
    • 主从结构,读写分离
    • 主节点的bin log日志记录了所有定义和操作语句
    • 从节点获取主节点的bin log,写入到relay log
    • 从节点执行relay log中的语句
  • 分库分表
    • 垂直分库:不同业务分到不同库(用户,订单,商品)
    • 垂直分表:不同字段放入不同表(text,blob,不常用字段)
    • 水平分库:一个库变多个库(1100w,100w200w)
    • 水平分表:一张表变多张表(1100w,100w200w)
  • 分库分表后出现的问题
    • 分布式一致性
    • 跨节点查询、分页,排序
    • 主键避重
  • 分库分表后如何生成全局ID
    • UUID
    • redis
    • 雪花算法(1符号位,41时间戳,10机器号,12序列号)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/390115.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大模型分布式训练之DeepSpeed优化器并行(ZeRO)原理

由于大模型参数量非常庞大&#xff0c;所以我们常常需要用到分布式训练来解决训练过程中计算资源不足的问题&#xff0c;现在也出现了很多大模型相关的分布式训练框架&#xff0c;但是使用的比较多的还是deepspeed的数据并行&#xff0c;那么deepspeed是怎么实现数据并行的呢 文…

【Unity】web gl inputFied 中文输入,同时支持TextMeshInputFied,支持全屏

同时支持TextMeshInputFied&#xff0c;支持全屏。 使用github包【WebGLInput】&#xff1a;https://github.com/kou-yeung/WebGLInput 需要资源的在这里也可以下载 https://download.csdn.net/download/weixin_46472622/89600795 用于unity web gl 中文输入&#xff0c;只需…

【人工智能】边缘计算与 AI:实时智能的未来

&#x1f48e; 我的主页&#xff1a;2的n次方_ &#x1f48e;1. 引言 随着物联网设备数量的爆炸性增长和对实时处理需求的增加&#xff0c;边缘计算与人工智能&#xff08;Edge AI&#xff09;成为一个热门话题。Edge AI 通过在本地设备上运行 AI 算法&#xff0c;减少对云计…

大数据-61 Kafka 高级特性 消息消费02-主题与分区 自定义反序列化 拦截器 位移提交 位移管理 重平衡

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

Python酷库之旅-第三方库Pandas(062)

目录 一、用法精讲 241、pandas.Series.view方法 241-1、语法 241-2、参数 241-3、功能 241-4、返回值 241-5、说明 241-6、用法 241-6-1、数据准备 241-6-2、代码示例 241-6-3、结果输出 242、pandas.Series.compare方法 242-1、语法 242-2、参数 242-3、功能 …

最新小猫咪PHP加密系统源码V1.4_本地API接口_带后台

简介&#xff1a; 最新小猫咪PHP加密系统源码V1.4_完全本地化加密API接口_带后台 小猫咪PHP加密系统历时半年&#xff0c;它再一次迎来更新&#xff0c;更新加密算法&#xff08;这应该是最后一次更新加密算法了&#xff0c;以后主要更新都在框架功能上面了&#xff09;&…

Python 爬虫项目实战(一):破解网易云 VIP 免费下载付费歌曲

前言 网络爬虫&#xff08;Web Crawler&#xff09;&#xff0c;也称为网页蜘蛛&#xff08;Web Spider&#xff09;或网页机器人&#xff08;Web Bot&#xff09;&#xff0c;是一种按照既定规则自动浏览网络并提取信息的程序。爬虫的主要用途包括数据采集、网络索引、内容抓…

代码随想录27天|贪心

455.分发饼干 代码随想录 第一想法 将孩子胃口值g[i] 按从小到达的顺序排列&#xff0c;饼干尺寸也按照从小到大的顺序去排列。 优先将大尺寸喂给大胃口孩子。如果满足不了胃口那么久试着分给下一个孩子。 要尽量满足更多的孩子&#xff0c;那么大尺寸的饼干就不能喂给小胃口…

【多线程】线程状态与并发三大特性的细节剖析

这篇文章主要用于对于多线程的一些查缺补漏。 一、 线程的状态 1&#xff0c;操作系统层面&#xff0c;线程的5种状态 关于线程有几种状态&#xff0c;有多种说法&#xff0c;5、6、7都有。 首先对于操作系统来说&#xff0c;只有5种状态&#xff0c;状态如下新建&#xff…

浅谈KMP算法(c++)

目录 前缀函数应用【模板】KMP题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示样例 1 解释数据规模与约定 思路AC代码 本质不同子串数 例题讲解[NOI2014] 动物园题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示思路AC代码 [POI2006] OKR-Periods of …

智慧水务项目(一)django(drf)+angular 18 通过pycharm建立项目

一、环境准备 windows 10 pycharm python3.11 二、pycharm 创建django项目 三、建立requirements.txt 在根目录创建requirements.txt,也就是与manage.py同一目录下&#xff0c;先放下面几个依赖 Django djangorestframeworkpip install -r .\requirements.txt 更新下pip python…

ShardingSphere实战(1)- 分库分表基础知识

一、为什么要分库分表 分库分表是一种数据库优化策略&#xff0c;主要用于解决大型应用或高并发场景下数据库性能瓶颈的问题。具体来说&#xff0c;分库分表可以带来以下好处&#xff1a; 提高性能&#xff1a; 减少单个数据库实例的负载&#xff0c;避免单点性能瓶颈。当数据…

【香橙派系列教程】(五)Linux的热拔插UDEV机制

【五】Linux的热拔插UDEV机制 在上一篇中我们发现&#xff0c;当手机接入开发板时&#xff0c;系统并不认识&#xff0c;当我们在/etc/udev目录下创建一个规则后&#xff0c;就可以通过adb访问到手机了&#xff0c;这里到底是怎么回事&#xff1f; 文章目录 【五】Linux的热拔插…

武汉流星汇聚:亚马逊平台消费者众多,助力中国卖家销售额大幅增长

在全球电商的浩瀚星空中&#xff0c;亚马逊凭借其庞大的消费者规模和强大的市场影响力&#xff0c;为无数商家特别是中国卖家提供了前所未有的发展机遇。近年来&#xff0c;越来越多的中国卖家选择通过亚马逊平台&#xff0c;将优质产品直接送达全球消费者的手中&#xff0c;并…

精选3款国内wordpress 主题,建站首选

WordPress作为一款功能强大且易于使用的建站平台&#xff0c;已经成为了许多企业和个人搭建网站的首选。为了帮助大家更好地选择适合自己的WordPress主题&#xff0c;小编将为大家推荐三款国内优秀的WordPress主题&#xff1a;子比主题、OneNav主题和RiTheme主题。 1.子比主题…

JavaScript ES6语法详解(下)

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;我是码喽的自我修养&#xff01;今天给大家分享JavaScript ES6语法详解(下)&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到带大家&#xff0c;欢迎收藏关注…

Qt Creator 与 ESP-IDF QEMU 模拟器使用指南

标题: Qt Creator 与 ESP-IDF QEMU 模拟器使用指南 概要: 本文为开发者提供了使用 Qt Creator 和 ESP-IDF QEMU 模拟器进行 ESP32 开发的详细指南&#xff0c;包括环境准备、项目创建和编译、模拟器设置、编程和调试等方面的内容。通过本指南&#xff0c;可以快速上手 Qt Crea…

Learning vtkjs之Calculator

过滤器 公式计算器 Calculator 介绍 The Calculator filter is a fast way to add derived data arrays to a dataset. These arrays can be defined over points, cells, or just field data that is “uniform” across the dataset (i.e., constant over all of space). Va…

手把手教你实现日期类

目录 前言 1.头文件的实现 2.日期类函数各项功能实现 2.1 初始化和打印&#xff08;比较简单&#xff09; 2.2日期大小判断 2.3日期的加减运算 3.日期类的输入输出 4.测试代码参考 结束语 前言 前面我们讲解了类的对象的大部分知识&#xff0c;例如拷贝构造&#xff0c…

优化数据处理效率,解读 EasyMR 大数据组件升级

EasyMR 作为袋鼠云基于云原生技术和 Hadoop、Hive、Spark、Flink、Hbase、Presto 等开源大数据组件构建的弹性计算引擎。此前&#xff0c;我们已就其展开了多方位、多角度的详尽介绍。而此次&#xff0c;我们成功接入了大数据组件的升级和回滚功能&#xff0c;能够借助 EasyMR …