jinying8869 发表于 2018-10-6 08:32:22

MySQL数据库从入门到实战(一)

  第一部分:了解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.311.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)多个区构成,我们认为,连续的区组成段

页: [1]
查看完整版本: MySQL数据库从入门到实战(一)