一、为什么要使用数据库?
使用一个东西,就要清楚它的功能价值,才能更好的利用它,使我们在工作生活中游刃有余。关于数据库的使用,好多人会说,一个数据库就是好多张表,那么为什么不使用如Excel的表格呢,作为Mysql的使用者,我们就必须清楚数据库区别于表格的地方,至少要对它有一点了解。
1、首先,数据库的数据量是没有上限的,但是Excel表格却有。下面一组数据可以说明这个问题:
随着互联网越来越深入到人们生活的方方面面,市场的需求日益扩大,在大部分中大型公司甚至小公司的运营中,他们的业务数据量是千万甚至亿级的,如此庞大的数据信息,用Excel是不合适的,也是不现实的;虽然数据库单库行数过多时,存在性能上的问题,但是我们可以用过分库,分表,分布式,合理的索引等技术手段,来实现数据库的三高(高并发、高性能、高可用)。
2、数据库具有完备的结构化查询语言,即sql语言,虽然Excel也有查询语言,但是性能却远远无法与sql相比。
3、数据库的服务化:数据库是面向软件的,这要区别于Excel,Excel是文件级别的,面向的始终是终端用户,而数据库只提供软件接口。
4、支持事务:我们来看看事务的定义:事务是指是程序中一系列严密的逻辑操作,而且所有操作必须全部成功完成,否则在每个操作中所作的所有更改都会被撤消。可以通俗理解为:就是把多件事情当做一件事情来处理,好比大家同在一条船上,要活一起活,要完一起完 。事务是十分重要的,就好比如转账过程:小明和小王账户余额各为1000元,此时小明向小王转账500元,小王的账户应当加500,而小明的账户应当减500,这样子才算完成了转账,事务通过了,大家相安无事,如果中间出了什么问题,小明账户扣了500,但是小王的却没有加,那么就回滚到出现问题之前,两人账户都为1000元,这就是事务的作用,试想没有事务,那么会多出来多少纠纷呢?
5、支持分布式,分布式是数据库的巨大潜力所在,数据库可以通过主备复制、高可用、分布式等形态,极大地提高性能。
二、软件的典型架构
分析数据库的典型架构之前,我们先了解一下常见的软件设计架构:
通俗的讲:一个事件(Event)进入到事件通道(消息中间件)中,然后消息中间件再根据该事件的属性等特征,将其路由到事件进程中进行处理,然后响应结果给消息中间件,然后根据需要进行二次处理。
三、Mysql软件架构
*其中InnoDB、MyISAM、Archive为存储引擎。
1、 分析架构:
2、对此总结:大型的软件并不是单一的架构,如MySQL可以看到分层、管道过滤器(责任链)、微内核等架构的集合。
四、MySQL四种常见的存储引擎
1、InnoDB:作为MySQL5.5.5版本之后默认的存储引擎,红的发紫,支持事务、外键、崩溃修复、并发控制等,也为MySQL在市场上的地位的保持提供了强有力的支持。
2、MyISAM:MySQL5.5.5版本之前默认的存储引擎,插入、查询数据的速度快,性能好,也为它在数据的存储上采用了B+树结构,且不支持事务(功能越少,事情越少,当然也就比较快),而且该引擎的空间利用率较高。
3、Memory:单词memory内存的意思,顾名思义,该引擎所有的数据都存在内存中,速度很快(不论是查询还是插入),但是数据安全性低,因为都在内存中,一旦设备断电损坏等,容易造成数据的丢失,从而造成不可估量的损失,所以在使用存储引擎时要评估风险,因业务性质制宜。
4、Archive:数据压缩放进磁盘,空间利用率高,但不支持索引,这也导致了它插入数据快,取出数据慢,查询性能差。一般我们用它存放一些日志信息等不经常查询的数据。
五、客户端是如何连接MySQL数据库的
1、常见的连接方式有很多种,这里举例四种:
服务端:--shared-memory
客户端:--protocol=memory
客户端:-S=/tem/mysql.sock
服务端:--socket=/tem/mysql.sock
2、MySQL的TCP讯通协议基本过程:
*过程分析:
3、MySQL TCP报文格式:
六、一条sql是如何执行的(步骤及其功能作用)?
完毕!谢谢耐心观看。