第一部分:了解DBA体系
一、初级DBA应该掌握哪些技能?(运维人员必会知识)
1.MySQL安装部署
2.基本参数配置
3.备份策略设计与实现
二、中级DBA应该掌握哪些技能?
1.故障处理能力(备份或者其他手段)
2.MySQL监控能力
3.基本优化能力(索引、执行计划、慢日志分析);有一定的SQL分析能力
4.主从复制的基本管理、应用、故障处理
三、高级DBA应该掌握哪些技能?
1.MySQL性能调优:对整体架构、“业务”、“用户行为”深入了解,要有很扎实的SQL能力
2.高性能、高可用架构:对整体架构、“业务”、“用户行为”深入了解
四、对数据的理解
对现实对象、事件的抽象显示或存储方式
数据库适合存储什么数据?
》重要数据
》非二进制的,文本形式的更适合于存放到数据库中
》有关系,有复杂逻辑的数据
》数据管理复杂的
第二部分:DBMS数据库管理系统
一、作用:
1、更有条理的存储和查询数据
2、提供更高级的数据管理方式(备份、恢复、优化、安全等等)
二、分类:
1.关系型
二维表
典型产品 Oracle传统企业,MySQL是互联网企业
数据存取是通过SQL
最大特点,数据安全性方面强(ACID)
2.非关系型(NoSQL)
非关系型数据库(Not only SQL)
不是否定关系型数据库,做关系型数据库的的补充
3.数据库版本
oracle数据库版本介绍(目前仍位居第一)
(8.1.7,9.2.0.8 ,10.2.0.4 10.2.0.5,11.2.0.3 11.2.0.4,12.2)
MySQL数据库版本介绍(开源免费)
(5.6.36 ,5.6.38 ,5.6.34 ,5.7.18,5.7.20)
面试问题总结: 询问你公司用的mysql版本,为什么用?
行业规范,选择主流大版本,发布六个月以上GA版本,我们公司选择这款数据库是基于公司业务特点决定的,开发阶段也是用的5.6的版本。(根据自己业务公司情况来说)
三、补充:
》mariadb(mysql的一个主要分支)存储引擎TokuDB特点:
1.insert操作比innodb性能高3-4倍
2.数据压缩比8倍以上
3.查询性能比innodb好
》企业应用场景:
zabbix(爬虫类)应用业务类型:(原因如下)
1.insert插入多
2.数据量大,需要存储大量数据
》perconaDB(了解,有精力可研究)研究它的工具:
xtrabackup (用于优化SQL)

第三部分:MySQL体系结构
1、客户端、服务器端模型
MySQL是一个典型的C/S结构的模型,客户端——服务器一种模型。
服务端:mysqld
客户端:自带客户端工具(mysql、mysqldump等),API驱动
一、mysqld构成
(1).连接层
说明:
》提供通信协议
TCP/IP ---所有系统通用
socket ---linux特有
》 验证用户的合法性(匹配mysql.user):
用户@'ip' 密码
》提供链接线程;随着客户端请求派生出专门的响应线程;作用是和客户端进行交互
查看当前数据库的连接线程数:show full processlist
过程:》接收客户端发来的SQL》得到查询结果之后返回给客户端结果》向下层(SQL层)传输接收到的SQL》后端处理完成的结果负责接收,转给客户端。
(2)SQL层
》SQL线程接收上层线程发送过来的SQL语句
》检查语法是否正确,有误抛出错误提示,还有授权检测
》检查语义,语句的类型(DDL、DCL、DML、DQL)
》会将语句交给不同解析进行解析
》解析器开始解析,生成执行计划
》优化器,判断所有生成的执行计划,找到成本最低的执行计划,转给执行器
》执行器,执行这个执行计划,得出去哪个盘找哪个文件的哪页哪行数据
》有专门的线程将结果发送给下层(存储引擎层)继续处理
》下层传过来的数据结构化成表的形式,转给上层连接层专门线程
》将上层执行过的SQL语句进行hash,生成一个hash结果(SQL_ID)和获取数据结果缓存下来(QUERY_CACHE)。
补充:
》企业里现在主流解决方案关闭QUERY_CACHE,用redis或memcache代替
(3)存储引擎层
》接收上层传过来的数据位置,找到相应的页上的行
》找到行之后,发送给SQL层
二、库,表,页,区,段定义
————————————————————————
数据库的逻辑结构(数据库对象)
库:更好的管理一堆表
表:(1)表属性:表名、表中的列名和列定义、表的存放位置定义。
(2)表真实数据行。
我们将来,对数据库的操作,实际上就是对以上的对象进行操作。
+++++++++++++++++++++++++++++++++++++++++
(1)页(默认16k):mysql的最小物理存储分配单元。
用来存放数据库中表中的行
(2)区:mysql认为对于一行数据来讲,如果需要多个页情况,我们尽量给他连续的才更高效,所有有了区的概念。
(3)多个区构成,我们认为,连续的区组成段