字节跳动技术总监整理的这份MySQL学习文档,看完才发现要学的可太多了!

news2024/12/22 19:14:16

对于程序员来说,去任何一家公司面试,数据库是避不开的。开发人员对MySQL掌握的越深入,你能做的事情就越多。

完成业务功能,要懂基本的Sql语句。
做性能优化,要懂索引,懂引擎。
做分库分表,要懂主从,懂读写分离。
做安全,要懂权限,懂备份,懂日志。
做云数据库,要懂源码,懂瓶颈。

相信大家对于MySQL都不陌生,尤其是索引,索引(Index)是帮助MySQL高效获取数据的数据结构。索引作为MySQL中比较重点的知识,在面试中出现的频率特别高。

之前直属领导跳槽去了字节跳动当技术总监,他给我留了这份MySQL相关的知识点,看完目录就感觉自己以前学习的内容实在是太少了!经过一段时间的学习,我感觉对于MySQL已经吃透了许多,打算在学一段时间就去大厂面试看看能不能拿到offer!

一、数据库基础知识

  • 为什么要使用数据库
  • 什么是SQL?
  • 什么是MySQL?
  • 数据库三大范式是什么
  • mysql有关权限的表都有哪几个
  • MySQL的binlog有有几种录入格式?分别有什么区别?
  • ……

二、数据类型

  • mysql有哪些数据类型

三、引擎

  • MySQL存储引擎MyISAM与InnoDB区别
  • MyISAM索引与InnoDB索引的区别?
  • InnoDB引擎的4大特性
  • 存储引擎选择

四、索引

  • 什么是索引?
  • 索引有哪些优缺点?
  • 索引使用场景(重点)
  • 索引有哪几种类型?
  • 索引的数据结构(b树,hash)
  • 索引的基本原理
  • 索引算法有哪些?
  • 索引设计的原则?
  • 创建索引的原则(重中之重)
  • 创建索引的三种方式,删除索引
  • 创建索引时需要注意什么?
  • 使用索引查询一定能提高查询的性能吗?为什么
  • 百万级别或以上的数据如何删除
  • 前缀索引
  • 什么是最左前缀原则?什么是最左匹配原则
  • B树和B+树的区别
  • 使用B树的好处
  • 使用B+树的好处
  • Hash索引和B+树所有有什么区别或者说优劣呢?
  • 数据库为什么使用B+树而不是B树
  • B+树在满足聚簇索引和覆盖索引的时候不需要回表查询数据,
  • 什么是聚簇索引?何时使用聚簇索引与非聚簇索引
  • 非聚簇索引一定会回表查询吗?
  • 联合索引是什么?为什么需要注意联合索引中的顺序?

五、事务

  • 什么是数据库事务?
  • 事物的四大特性(ACID)介绍一下?
  • 什么是脏读?幻读?不可重复读?
  • 什么是事务的隔离级别?MySQL的默认隔离级别是什么?

六、锁

  • 对MySQL的锁了解吗
  • 隔离级别与锁的关系
  • 按照锁的粒度分数据库锁有哪些?锁机制与InnoDB锁算法
  • 从锁的类别上分MySQL都有哪些锁呢?像上面那样子进行锁定岂不是有点阻碍并发效率了
  • MySQL中InnoDB引擎的行锁是怎么实现的?
  • InnoDB存储引擎的锁的算法有三种
  • 什么是死锁?怎么解决?
  • 数据库的乐观锁和悲观锁是什么?怎么实现的?

七、视图

  • 为什么要使用视图?什么是视图?
  • 视图有哪些特点?
  • 视图的使用场景有哪些?
  • 视图的优点
  • 视图的缺点
  • 什么是游标?
  • 存储过程与函数
  • 什么是存储过程?有哪些优缺点?

八、触发器

  • 什么是触发器?触发器的使用场景有哪些?
  • MySQL中都有哪些触发器?

九、常用SQL语句

  • SQL语句主要分为哪几类
  • 超键、候选键、主键、外键分别是什么?
  • SQL 约束有哪几种?
  • 六种关联查询
  • 什么是子查询
  • 子查询的三种情况
  • mysql中 in 和 exists 区别
  • varchar与char的区别
  • varchar(50)中50的涵义
  • int(20)中20的涵义
  • mysql为什么这么设计
  • mysql中int(10)和char(10)以及varchar(10)的区别
  • FLOAT和DOUBLE的区别是什么?
  • drop、delete与truncate的区别
  • UNION与UNION ALL的区别?

十、SQL优化

  • 如何定位及优化SQL语句的性能问题?创建的索引有没有被使用到?或者说怎么才可以知道这条语句运行很慢的原因?
  • SQL的生命周期?
  • 大表数据查询,怎么优化
  • 超大分页怎么处理?
  • mysql 分页
  • 慢查询日志
  • 关心过业务系统里面的sql耗时吗?统计过慢查询吗?对慢查询都怎么优化过?
  • 为什么要尽量设定一个主键?
  • 主键使用自增ID还是UUID?
  • 字段为什么要求定义为not null?
  • 如果要存储用户的密码散列,应该使用什么字段进行存储?
  • 优化查询过程中的数据访问
  • 优化长难的查询语句
  • 优化特定类型的查询语句
  • 优化关联查询
  • 优化子查询
  • 优化LIMIT分页
  • 优化UNION查询
  • 优化WHERE子句

十一、数据库优化

  • 为什么要优化
  • 数据库结构优化
  • MySQL数据库cpu飙升到500%的话他怎么处理?
  • 大表怎么优化?某个表有近千万数据,CRUD比较慢,如何优化?分库分表了是怎么做的?分表分库了有什么问题?有用到中间件么?他们的原理知道么?
  • 垂直分表
  • 适用场景
  • 缺点
  • 水平分表:
  • 适用场景
  • 水平切分的缺点
  • MySQL的复制原理以及流程
  • 读写分离有哪些解决方案?
  • 备份计划,mysqldump以及xtranbackup的实现原理
  • 数据表损坏的修复方式有哪些?

花了一周的时间总结的MySQL知识点,不足之处还请大家指出!!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Head First设计模式(阅读笔记)-13.代理模式

监控糖果机 假设现在需要一台监视器去生成报告,报告中包括糖果机的位置、库存等信息 // 糖果机 public class GumballMachine{String loc;public GumballMachine(String loc, int count){this.loc loc;}public String getLoc(){return loc;}// 其他方法省略 } // 监…

详解Pytorch中的torch.nn.MSELoss函数(包括每个参数的分析)

一、函数介绍 Pytorch中MSELoss函数的接口声明如下,具体网址可以点这里。 torch.nn.MSELoss(size_averageNone, reduceNone, reduction‘mean’) 该函数默认用于计算两个输入对应元素差值平方和的均值。具体地,在深度学习中,可以使用该函数用…

玩转webpack(03):webpack进阶使用

一、自动清理构建目录 避免构建前每次都要手动删除dist 使用 clean-webpack-plugin(默认删除output指定的输出目录) (1)依赖安装 npm i clean-webpack-plugin -D (2)使用 --- webpack.prod.js const Cl…

基于java学生签到考勤系统

开发工具eclipse,jdk1.8 技术:java swing 数据库:mysql5.7 学生选课系统功能:管理员、教师、学生三个角色 一、管理员功能: 1.登录、修改密码、退出系统 2.学生管理:添加、修改、删除、查询 3.班级管理&#x…

YOLOV1算法学习记录

前言 R-CNN系列算法(R-CNN、SPPNet、Fast R-CNN、Faster R-CNN)均是采用two-stage的方法(1.提取region proposal 2.分类边框回归),主要是对region proposal进行识别定位。虽然这类方法检测精度很高,但由于…

Leetcode番外篇——滑动窗口的应用

各位好,博主新建了个公众号《自学编程村》,拉到底部即可看到,有情趣可以关注看看哈哈,关注后还可以加博主wx呦~~~(公众号拉到底部就能看到呦) 我们刚刚在上一节讲述了TCP的滑动窗口。殊不知,它…

基于RISC-V的Copy-On-Write

为什么需要写时拷贝呢? 当 shell执行指令的时候会 fork(),而这个 fork()出来的进程首先会调用的就是 exec来执行对应的命令,如果我们将 fork()创建的进程对地址空间进行了完整的拷贝,那将是一个巨大的消耗 因为在实际应用中,for…

微信小程序框架-全面详解(学习总结---从入门到深化)

小程序与普通网页开发的区别 小程序的主要开发语言是 JavaScript ,小程序的开发同普通的网页 开发相比有很大的相似性。对于前端开发者而言,从网页开发迁移 到小程序的开发成本并不高,但是二者还是多少有些许区别的,例如&#xff…

HCIP实验 4-1:路由引入与路由控制

实验 4-1 路由引入与路由控制 学习目的 掌握OSPF与ISIS相互路由引入的配置方法掌握通过地址前缀列表过滤路由信息的配置方法掌握通过Route-policy过滤路由信息的配置方法 拓扑图 场景 你是你们公司的网络管理员。公司网络中有两部分路由区域,一部分运行OSPF,另外…

【Proteus仿真】【51单片机】厨房天然气泄漏检测报警系统

文章目录一、功能简介二、软件设计三、实验现象联系作者一、功能简介 本项目使用Proteus8仿真51单片机控制器,使用LCD1602、按键、天然气、烟雾传感器、ADC,报警模块等。 系统运行后,LCD1602显示传感器检测的天然气浓度和烟雾浓度值。 可通…

中国土地交易数据库:300w数据中国土地高频交易数据2000-2022

土地交易是土地在流通过程中多方发生的经济关系,土地交易的行为主要是交换的土地所有权、使用权、租赁权、抵押权等。在我国,土地作为一种重要资源,其收购储备和交易行为都由国家进行统一管理。经过改革开放几十年的探索和实践,土…

手机投影到电脑显示 此设备不支持miracast,因此不能以无线投影到它

在家里使用手机的体感游戏,发现手机屏幕比较小,想要将其投影到自己的笔记本电脑上,这样看得就比较大了。然后我就打开笔记本电脑,操作如下: 如下图: 原文地址:手机投影到电脑显示 此设备不支持miracast,因此不能以无线投影到它 - 廖强的博客 但是结果我们就看到了…

Mysql安装配置和Mysql使用六千字详解!!

目录 课前导读 一、Mysql的安装和配置 二、数据库简介: 1、数据库中典型代表: 2、数据库类型: 3、Mysql简介: 4、客户端和服务器简介: 三、初始MySQL 四、数据库操作 五、表的基本操作 六、表的基础增删查改…

虚拟主机、WordPress 主机和云主机之间的区别

💂 个人网站:【海拥】【摸鱼游戏】【神级源码资源网站】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 想寻找共同学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】💬 免费且…

[附源码]JAVA毕业设计校园失物招领管理系统(系统+LW)

[附源码]JAVA毕业设计校园失物招领管理系统(系统LW) 项目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目…

港科夜闻|罗康锦教授获委任为香港科大工学院院长

关注并星标每周阅读港科夜闻建立新视野 开启新思维1、罗康锦教授获委任为香港科大工学院院长。该委任任期由2023年1月1日开始。罗康锦教授服务香港科大多年,是智慧交通系统、智慧城市和可持续发展的杰出学者,在学术研究方面屡获殊荣。罗教授拥有丰富的学…

阿里巴巴内部最新发布SpringCloud ALiBaBa全彩版

就在昨天,阿里巴巴发布了最新的SpringCloud ALiBaBa全解第三版同时也是全彩版,话不多说我们直接来看干货! 由于文章的篇幅有限,下面只能为大家展示目录内容,需要领取完整版可以文末免费获取章节目录 微服务介绍 微服务…

Go 实现插入排序算法及优化

Go 实现插入排序算法及优化插入排序算法实现算法优化小结耐心和持久胜过激烈和狂热。 哈喽大家好,我是陈明勇,今天分享的内容是使用 Go 实现插入排序算法。如果本文对你有帮助,不妨点个赞,如果你是 Go 语言初学者,不妨…

python基于SVM的疫情评论情感数据分析

1、构建SVM情感分析模型 读取数据 使用pandas的库读取微薄数据读取并使进行数据打乱操作 import pandas as pd test pd.read_csv(".\\weibo.csv") test_data pd.DataFrame(test)[:1000] test_data 打乱数据 re_test_data test_data.sample(frac1).reset_index(…

代码随想录训练营第44天|完全背包、LeetCode 518. 零钱兑换 II、 377. 组合总和 Ⅳ

完全背包 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品都有无限个(也就是可以放入背包多次),求解将哪些物品装入背包里物品价值总和最大。 完全背包和01背包问题唯一不同…