MySQL(学习笔记一)数据库基础和MySQL简介

1、数据库基础理论

1.1数据库

数据:描述数据的符号记录,可以是数字、文字、图形、图像、声音等多种形式,经过数字化处理存储在计算机中。

数据库(DB):存储数据的仓库。

数据库特点:数据结构化、数据共享性高,冗余度低,易扩充、数据独立性高、数据由DBSM统一管理和控制。

数据库管理系统(DBMS):是管理数据库的软件,对所有数据进行存储、安全、一致性、并发操作、恢复和访问负责;
对数据库进行完整和统一的管理和控制机制;
在数据库管理系统中对用户数据进行上传、更新、删除等操作;

1.2数据库系统和文件系统的区别

文件系统:文件系统是对操作系统中明显的文件进行管理,一般是存储在磁盘或硬盘中的文件;
数据库系统(DBS):数据库管理系统是对数据库进行建立、使用和维护的软件;

区别:
1、管理对象不同:
文件系统的对象是文件,数据库系统的对象是数据;
2、存储方式不同:
文件系统将数据以统一格式存储在外部存储上,数据库将数据以统一数据类型存储;
3、调用数据的方式不同:
文件系统使用不同软件打开不同文件格式的文件,数据库由DBMS进行调用和管理

1.3数据库优缺点

1、可以直接通过BDMS获取数据,数据使用十分便利;
2、具有以数据为单位的共享性,具有数据的并发访问能力;
3、低延时访问,在大规模使用时,数据库的效率远远高于文件系统;
4、在频繁对数据进行操作时,数据库可以依赖DBMS进行完成且消耗性能小;
5、对事务的支持,对数据的操作集合要么都完成要么都不完成,在DBMS上的数据操作都是原子级的;

1.4数据库发展史

初始阶段–人工管理:人力手工整理数据
萌芽阶段–文件系统:使用磁盘文件来存储数据
初级阶段–第一代数据库:网状、有层次的数据库
中级阶段–第二代数据库:关系型数据库和结构化查询语句
高级阶段–第三代数据库:NOSQL数据库

1.5常见数据库

1.5.1关系数据库

建立在关系模型基础上的数据库

Oracle、DB2、SQLserver等

1.5.2非关系数据库

又称为NoSQL,是一种轻量、开源、不兼容SQL数据库

MongoDb、Redis、Memcached

1.5.3NoSQL数据库和关系数据库的优缺点

NoSQL数据库优点:

1、可以处理非结构化和半结构化数据,支持大数据量和高并发访问。
2、没有固定的模式,可以根据需要进行灵活的数据模型设计。
3、可以水平扩展,支持分布式部署,提高了系统的可扩展性和可用性。
4、通常具有更好的性能和更低的成本。

NoSQL数据库缺点:

1、缺乏标准化,不同的NoSQL数据库之间的语法和API不同,需要学习不同的技术。
2、不支持复杂的事务处理,不适合需要强一致性和完整性的应用场景。
3、缺乏成熟的工具和生态系统,开发和维护成本较高。
4、不支持SQL查询语言,需要使用特定的查询语言或API。

关系数据库优点:

1、支持复杂的事务处理,保证数据的一致性和完整性。
2、支持SQL查询语言,方便进行数据查询和分析。
3、具有成熟的工具和生态系统,开发和维护成本较低。
4、支持标准化,不同的关系数据库之间的语法和API相似,易于学习和使用。

关系数据库缺点:

1、不适合处理非结构化和半结构化数据,对数据模型有严格的要求。
2、不支持水平扩展,只能通过垂直扩展提高系统性能,成本较高。
3、对于高并发访问和大数据量的处理,性能较差。
4、通常需要较高的硬件和软件成本。

1.6 MySQL 简介

MySQL是一个小型关系数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被sun公司
10亿美金收购。2009年,SUN又被Oracle以74亿美金收购。
目前MySQL被广泛地应用在Internet上的中小型网站中。由于体积小、速度快、总体拥有成本低,尤其
是开放源代码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。

1.6.1 MySQL特性

  1. 使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性。
  2. 支持AIX、BSDi、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、NetBSD、OpenBSD、
    OS/2 Wrap、Solaris、SunOS、Windows等多种操作系统。
  3. 为多种编程语言提供了API。这些编程语言包括C、C++、C#、Delphi、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。
  4. 支持多线程,充分利用CPU资源,支持多用户。
  5. 优化的SQL查询算法,有效地提高查询速度。
  6. 既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。
  7. 提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名。
  8. 提供TCP/IP、ODBC和JDBC等多种数据库连接途径。
  9. 提供用于管理、检查、优化数据库操作的管理工具。
  10. 可以处理拥有上千万条记录的大型数据库。

1.6.2 MySQL体系结构

MySQL整体的逻辑结构可以分为4层:客户层、服务层、存储引擎层、数据层
客户层
客户层:进行相关的连接处理、权限控制、安全处理等操作
服务层
服务层负责与客户层进行连接处理、处理以及执行SQL语句等,主要包含连接器、查询缓存、优化器、执行器、存储引擎。触发器、视图等也在这一层
存储引擎层
存储引擎层负责对数据的存储和提取,常见的存储引擎有InnoDB、MyISAM、Memory等,在MySQL5.5之后,MySQL默认的存储引擎就是InnoDB,InnoDB默认使用的索引结构就是B+树,上面的服务层就是通过API接口与存储引擎层进行交互的
数据层
数据层系主要包括MySQL中存储数据的底层文件,与上层的存储引擎进行交互,是文件的物理存储层。其存储的文件主要有:日志文件、数据文件、配置文件、MySQL的进行pid文件和socket文件等。

1.6.3 一条SQL语句的执行流程

连接层
(1)提供连接协议:TCP/IP 、SOCKET
(2)提供验证:用户、密码,IP,SOCKET
(3)提供专用连接线程:接收用户SQL,返回结果
通过以下语句可以查看到连接线程基本情况
mysql> show processlist;
SQL层
(1)接收上层传送的SQL语句
(2)语法验证模块:验证语句语法,是否满足SQL_MODE
(3)语义检查:判断SQL语句的类型

DDL :数据定义语言
DCL :数据控制语言
DML :数据操作语言
DQL: 数据查询语言

(4)权限检查:用户对库表有没有权限
(5)解析器:对语句执行前,进行预处理,生成解析树(执行计划),说白了就是生成多种执行方案.
(6)优化器:根据解析器得出的多种执行计划,进行判断,选择最优的执行计划
代价模型:资源(CPU IO MEM)的耗损评估性能好坏
(7)执行器:根据最优执行计划,执行SQL语句,产生执行结果
执行结果:在磁盘的xxxx位置上
(8)提供查询缓存(默认是没开启的),会使用redis tair替代查询缓存功能
(9)提供日志记录(日志管理章节):binlog,默认是没开启的。
存储引擎层(类似于Linux中的文件系统)
负责根据SQL层执行的结果,从磁盘上拿数据。
将16进制的磁盘数据,交由SQL结构化化成表,
连接层的专用线程返回给用户。


在这里插入图片描述
祝大家都可以Complete!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值