1.MySQL入门

184 阅读6分钟

一、什么是数据库?

学习数据库前,先了解下什么是数据库?

  • 数据(Data):描述事物的符号,可以使数字、文字、图像、声音、语言等。
  • 数据库(DataBase):指长期存储在计算机内的、有组织、可共享的数据集合。
  • 数据库管理系统(DBMS):数据库系统核心软件之一,是位于用户和操作系统间的数据管理软件。

二、数据库类型

2.1 关系型数据库

概念:关系型数据库建立在关系模型基础上的数据库,借助几何代数等数学概念处理数据库中的数据。简单说关系型数据库是由多张能互相连接的表组成的数据库。

优点:

  1. 数据使用表结构存储,格式一致,易于维护
  2. 使用通用SQL语言操作,使用方便,可用于复杂查询
  3. 数据存储在磁盘中,安全可靠

缺点:

  1. 读写性能较差,不能满足海量数据高效率读写
  2. 不节约空间,因为建立在关系模型上,需要遵循某些规则。比如数据中某个字段即使为空,仍然要分配空间
  3. 固定表结构,灵活度较低

2.2 非关系型数据库

概念:非关系型数据库又被陈伟NoSQL(Not Only SQL)意为不仅仅是SQL.通常指数据通过对象形式存储在数据库中,对象间的关联关系通过每个对象自身属性决定。

优点:

  1. 非关系型数据库存储格式可以使key-value、文档、图片等。使用灵活,应用场景广泛
  2. 速度快、效率高。NoSQL可使用硬盘或随机存储器作为载体。
  3. 海量数据的维护和处理非常轻松 非关系型数据库具有扩展简单、高并发、高稳定、成本低廉的优势

缺点:

  1. 非关系型数据库不提供SQL支持,学习使用成本高
  2. 不支持事务,没有保证数据完整性和安全性的可靠方案
  3. 功能没有关系型数据库完善

三、为什么要使用数据库?

  • 数据库可以结构化存储大量的数据信息,方便用户进行有效的检索访问。数据库可以对数据进行分类保存,并且可以提供快速的查询

  • 数据库可以有效的保持数据信息的一致性、完整性、降低数据冗余。可以很好的保证数据有效、不被破坏,而且数据库自身有避免重复数据的功能,以此来降低数据的冗余。

  • 数据库可以满足应用的共享和安全方面的要求,把数据放在数据库中很多情况也是出于安全方面的考虑。

  • 数据库技术能够方便智能化的分析,产生新的有用信息

四、MySQL使用场景

  1. web网站系统: 因为MySql数据库的安装配置都非常简单,使用过程中的维护也不复杂,而且性能出色。还有一个非常重要的原因就是Mysql是开放源代码的。

  2. 日志记录系统: MySql数据库的插入和查询性能都十分高效,如果设计的好在使用MyISAM存储引擎的时候,两者可以做到互不锁定,达到很高的并发性能。所以对需要大量的插入和查询的系统来说,MySQL都是非常不错的选择。比如处理用户的登录日志,操作日志等。

  3. 数据仓库系统 随着现在数据仓库数据量的飞速增长,我们需要的存储空间越来越大。数据量的不断增长,使数据的统计分析变得越来越低效,也越来越困难。下面是几个主要的解决思路。

  • 采用昂贵的高性能主机以提高计算性能,用高端存储设备提高 I/O 性能,效果理想,但是成本非常高;

  • 通过将数据复制到多台使用大容量硬盘的廉价 PC Server 上,以提高整体计算性能和 I/O 能力,效果尚可,存储空间有一定限制,成本低廉;

  • 通过将数据水平拆分,使用多台廉价的 PC Server 和本地磁盘来存放数据,每台机器上面都只有所有数据的一部分,解决了数据量的问题,所有 PC Server 一起并行计算,也解决了计算能力问题,通过中间代理程序调配各台机器的运算任务,既可以解决计算性能问题又可以解决 I/O 性能问题,成本也很低廉。

五、MySQL系统架构

1730001-20190831101131485-465451900.png

image.png

  • 连接层:最上层一些客户端和连接服务。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过安全认证接入的客户端提供线程。同样在该层上可以基于SSL的安全链接,服务器也会为安全接入的每个客户端验证其所具有的操作权限。

  • 服务层:主要完成大部分核心服务功能。包括查询解析、分析、优化、缓存、以及所有内置函数,所有跨存储引擎的功能都在该层实现,包括触发器、存储过程、视图等。

    1.SQL接口:接收用户SQL命令,返回用户操作结果

    2.解析器:SQL传递到解析器时会被解析器验证和解析。MySQL是DBMS系统,无法直接理解SQL语句。Parser负责解析

    3.优化器:SQL在执行前会使用查询优化器对SQL进行优化

    4.缓存:查询缓存,如果查询缓存有命中的查询结果直接返回。

  • 引擎层:存储引擎真正负责了MySQL中数据存储和提取,服务器通过API与存储引擎进行通信,不同的存储引擎具有功能不同

  • 存储层:该层主要是将数据存储在运行于该设备的文件系统上,并完成与存储引擎的交互

SQL执行过程:

1730001-20190831101214977-641188093.png

Image.png

1730001-20190831101134854-1479410820.png

  • 客户端发送执行SQl给服务器
  • 服务器检查缓存,如果命中则返回缓存中的查询结果,否则进入下一步骤
  • 服务器端进行SQL解析、预处理、再由优化器生成对应的执行计划
  • MySQL根据优化器生成执行计划,再调用存储引擎的API执行查询
  • 将结果返回给客户端