数据库简介

  数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。

  所谓“数据库”系以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。

关系型数据库的特点

二维表
典型产品 Oracle传统企业,MySQL是互联网企业
数据存取是通过SQL(结构化查询语句)
最大特点,数据安全性方面强(ACID)

数据库使用排名

数据来源: https://db-engines.com/en/ranking


MySQL数据库版本介绍

    5.0--5.1--5.5--5.6--5.7--8.0

MySQL的市场应用

    a)  中、大型互联网公司

    b)  市场空间:互联网领域第一

    c)  趋势明显

    d)  同源产品:MariaDB、perconaDB

mysql发展史  

1979年,报表工具Unireg出现。
1985 年,以瑞典David Axmark 为首,成立了一家公司(AB前身),IASM引擎出现。
1990年,提供SQL支持。
1999-2000年,MySQL AB公司成立,并公布源码,开源化。
2000年4月BDB引擎出现,支持事务。
2008年1月16日,Sun(太阳微系统)正式收购MySQL。
2009年4月20日,甲骨文公司宣布以每股9.50美元,74亿美元的总额收购Sun电脑公司,MySQL 转入Oracle 门下。
2013年6月18日,甲骨文公司修改MySQL授权协议,移除了GPL。但随后有消息称这是一个bug。

MySQL的特点简介

开源、社区版免费、简单,使用方便,可靠、稳定、安全、社区活跃

  

Mysql体系结构

  mysql是一个典型的c/s模式,服务端与客户端两部分组成

服务端程序 mysqld
客户端程序 mysql自带客户端(mysql、mysqladmin、mysqldump等)
第三方客户端 API接口(php-mysql)

MySQL在启动过程

  1、启动后台守护进程,并生成工作线程

     2、预分配内存结构供MySQL处理数据使用

  # 实例就是MySQL的后台进程+线程+预分配的内存结构  --> 完整的数据库管理系统

  # 多实例==完整的数据库管理系统*n

mysql连接方式

TCP/IP 连接   网络连接串(通过用户名 密码 IP 端口进行连接)

mysql -uroot -p123 -h 127.0.0.1 -P 3306

socket 连接   网络套接字(用户名 密码  socket文件)

mysql -uroot -p123 -S /application/mysql/tmp/mysql.sock

在linux中使用mysql命令不加其他的参数连接方式即

mysql -uroot -p123     //使用的是套接字文件方式登录的

  

Mysqld服务的构成

1、连接层

(1)提供连接协议(TCPIP,socket)
(2)用户与密码的验证模块
(3)针对每个连接提供一个连接线程(接收用户命令,返回结果给用户)

2、SQL层

sql即结构化的查询语句(数据库内部逻辑语言)sql92 sql99

      DDL 数据库定义语言

      DCL 数据库控制语言

      DML 数据库操作语言

      DQL 数据查询语言

sql层处理流程  

select * from wordpress.user;

、语法检查模块
、对象权限及存在性检查模块
、语义检查模块(看看SQL是什么类型的DDL?DCL? DML? DQL?),交给对应类型的解析器继续处理
、解析器模块处理对应语句,解析成执行计划。
、优化器(.7优化可以选择性使用他提供的多种代价模型),选择《他觉得》代价最小的执行计划,交由下一个模块继续处理
、执行器:按照优化器选择,执行语句,得到结果(目标数据行在哪个文件上(t1.ibd)。的哪个位置(1000页))。
将执行结果,交给下一层继续处理
、提供查询缓存 query_cache(需要手工开启才能使用)
()每次运行一条语句的时候,首先做个hash运算,得出一串值(SQL ID),拿着SQL_ID缓存中找,如果匹配上,直接返回结果
()生成缓存时,拿着SQL_ID+结果存到缓存中
、查询日志记录(binlog)
我们还可以使用 Redis替代query_cache .

3、存储引擎层

负责和底层磁盘打交道,根据上层提供的获取数据的方法,得到数据(16进制)后,再转给上层,结构化成表模式
查看数据库当前运行的进程

存储引擎层功能:

    存数据、取数据

    数据的不同存储方式

不同的管理方式:

        事务(增、删、改)

        备份恢复       

        高级功能(高可用的架构、读写分离架构)

mysql的逻辑结构

  逻辑构成是为了用户能够读懂数据出现的,让你更好的理解数据。

  管理数据的一种方式。

库(database)----> 目录
表(table) ----> 目录下的文件
表的内容 ----> 文件的内容
表的属性(元数据) ----> 文件的Inode
//切换库
mysql> use mysql;
//查看表
mysql> show tables;
//查看列的信息(记录)
mysql> desc user;

mysql物理结构

对于Linux操作系统来讲,他的物理层是“柱面”
对于MySQL来讲,他是Linux系统之上的应用软件,他的物理层就是文件系统上的特定格式的文件
什么的格式是由MySQL<存储引擎>决定的
" tim [(none)]>show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)

存储引擎简介

InnoDB: 支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。
MyISAM: 插入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。如果应用的完整性、并发性要求比 较低,也可以使用。
MEMORY: 所有的数据都在内存中,数据的处理速度快,但是安全性不高。如果需要很快的读写速度,对数据的安全性要求较低,可以选择MEMOEY。它对表的大小有要求,不能建立太大的表。所以,这类数据库只使用在相对较小的数据库表。
  注意:同一个数据库也可以使用多种存储引擎的表。如果一个表要求比较高的事务处理,可以选择InnoDB。这个数据库中可以将查询要求比较高的表选择MyISAM存储。如果该数据库需要一个用于查询的临时表,可以选择MEMORY存储引擎。

MySQL体系结构小结

sql 优化相关的理念

解析器 : 执行计划  数据库执行sql的一种方式

优化器 : 知道基本规则,直接影响将来选择哪个执行计划

查询缓存 : 生产环境中,一般会用redis memcached 来代替

逻辑结构

 库    就是一个目录,为了存放多张表

 表    在相应的库中,用多个文件来表示

                    myisam表 3个文件:(.myd数据文件  .myi索引文件 frm表 结构定义文件)

innodb:  2个或者一个,共享表空间(ibdata1 基表 元数据)、独立表空间(5.6以后默认的表存储方式)

最新文章

  1. C语言进行面向对象编程
  2. oracle从零开始学习笔记
  3. URAL 1930 Ivan&#39;s Car(BFS)
  4. HDU1358:Period
  5. Swift入门(十一)——类型转换与is、as操作
  6. Eclipse字体修改设置
  7. WPF在后台中写一个鼠标移入移出的操作
  8. C语言求2的100次方怎么解,大整数运算
  9. tomcat加载不了spring-webjar终极解决办法
  10. Win32汇编开始 Hello Asm
  11. FileZilla客户端源码解析
  12. 404 error on preview ... &quot;buffer_id(29) is not valid (closed or unsupported file format)&quot;
  13. CodeForces - 556B Case of Fake Numbers
  14. 【野草】SQL Server之索引解析(二)
  15. Java基础——枚举详解
  16. android setCompoundDrawables和setCompoundDrawablesWithIntrinsicBounds区别
  17. 使用maven整合spring+springmvc+mybatis
  18. PhantomJS在Selenium中被标记为过时的应对措施
  19. 解析vue2.0中render:h=&gt;h(App)的具体意思
  20. HDU 2227 Find the nondecreasing subsequences (数状数组)

热门文章

  1. Qt环境配置 + Qt使用教程
  2. 【刷题】洛谷 P3573 [POI2014]RAJ-Rally
  3. MVC中HTML控件设为只读readonly
  4. Tensorflow实战Google深度学习框架-总结-1
  5. 特征选择实践---python
  6. SPSS数据类型:测量字段、角色字段
  7. tp 用group去重
  8. webapi框架搭建-数据访问ef code first
  9. isscroll插件 实现下拉加载 上啦刷新 转
  10. vue短信验证性能优化写入localstorage中