开篇词:mysql核心知识20讲
内容参考:
- 个人背景
- 面向人群
- 为什么要学习这个
一、个人背景
刘超,现任一线互联网公司技术经理,主要负责支付、商城系统的研发工作。就职过魅族、平安银行、金山等公司。对于大数据、高并发系统具有丰富的实战经验,在数据库方面,对大数据表设计、性能调优等方面积累了丰富的实战经验。
二、面向人群
- 初中级后端开发人员
- 在校学生
- 对MySQL有面试需求的开发人员
- 有理解MySQL底层原理需求的人员
三、学习这个之前需要什么基础
- 想要更好的学习和理解本专栏的内容,建议读者提前具备以下基础知识:
- 掌握基本的SQL语法;
- 具备一门编程语言能力,如Java、Golang、Python、C++等;
- 有过MySQL的基本操作最佳。
四、为什么要学习这个
本专栏从底层原理出发,透彻的分析MySQL的实现和运行原理,同时从实战角度去分析和验证结果。学习本专栏,你会获得下知识点:
底层原理:MySQL的执行SQL会经过内部哪些结构,各个内部结构组件的功能和权限职责是什么?MySQL在新增和更新数据时,数据是如何落盘的,落盘后是以什么数据结构存储的,当系统crash后,是如何保证数据一致性的。
MySQL的事务隔离级别,为什么会有幻读、脏读、可重复读出现?MySQL默认是什么事务隔离级别?如何优化MySQL事务?分布式系统的分布式事务是如何实现的?
MySQL索引的数据结构类型有哪些?为什么使用B+树作为InnoDB存储引擎索引的数据结构?什么是聚族索引、辅助索引?
表与索引设计:什么是范式与反范式?为什么使用金钱的数据类型不能用float\double?
什么是回表、覆盖索引?为什么建议每张表使用与业务无关的自增索引ID?什么是filesort,如何优化?
运维为什么不建议表分区?读写分离的好处是什么?什么是分表分库?用过分布式事务吗,是如何实现的?
数据库运维:MySQL的部署方式有哪些,各个部署方式的优缺点是什么?你优化过MySQL系统参数吗? MySQL是如何实现容灾恢复的?
五、学习完能带来什么帮助
- 熟悉MySQL运行原理:MySQL内部结构、增删改查运行流程及原理、数据库存储引擎、数据存储原理及数据结构、事务的内部实现等;
- 熟悉MySQL表设计规范:设计范式、数据类型选择、设计索引、自增主键,分表需要注意什么等等;
- 精通MySQL性能优化技能:索引的实现、索引的选择、索引类型、表分区、分表分库等;
- 熟悉MySQL的基本运维技能:MySQL部署方式、MySQL系统参数优化、容灾恢复等;
- 精通MySQL面试题,秒杀一线互联网公司MySQL面试。