why数据库?
- 数据库,用来管理数据。包括数据的增删查改等等操作。数据库的本质其实就是对文件的增删查改而已。
- 但是为什么需要数据库呢?我们直接写进文件不就ok?
- 不便于管理。
- 不安全。在文件和使用者之间加上一层(即数据库),保护数据安全性,这也是软件设计重要理念之一。
- 自己手工控制,难以解决海量数据。
mysql数据库
- 我也不做多余的废话,直接说重点内容。
- mysql数据库是数据库的一种,因为其高效,免费,使用的范围很广。
mysql的服务端 && 客户端:
- mysql分为服务端和客户端。服务端叫做mysqld。后面带上d是Linux下守护进程起名字的习惯。一般服务器端在远端机器上,你通过客户端发起命令,然后服务器端进行解析,然后下达给底层。
分层:
- 我这里将mysql的服务器分为3层。
- 最上层负责解析发送过来的命令,是否符合语法,是否安全等等。然后将命令下达给下层。
- 第二层是一些插件式的存储引擎(storage engine),这些存储引擎负责数据如何存储,什么时候存储,存储到哪儿等一系列具体的存储细节。因为是插件式的,所以mysql可以同时具备多种存储引擎,任意选择。
- 第三层就是磁盘,真正存储数据的地方。
- mysql服务的端口号是3306.
工作原理浅析:
- 根据以上,我们就可以大致的描绘出mysql工作之原理。
- mysql服务基于tcp协议。客户端发送的命令经过网络传输到服务器(这之间就是tcp/ip5层模型),服务器接收到后,解析命令,确认安全,交付给一个存储引擎,存储引擎存储完毕后返回存储结果给解析层,然后重定向到客户端的socket文件中。
- 由此可见,mysql就是一个网络服务,就是一个tcp套接字。
mysql的结构
- mysql是一个大的数据库(database)。你可以在其中创建一些自己的数据库,这些数据库本质上就是一个目录而已。然后在每个database中你可以创建表(tables),这每一个表其实就是文件而已(但是,一张表可能对应好几个文件)。
- 图比较丑陋,但大体就是如此。
mysql的配置
-
mysql支持很多种字符集,校验方式,存储引擎等。所以你创建的每一张表都需要决定使用什么样式的配置。
-
所谓的字符集(character set)就是存储的方式,支不支持汉字存储等一系列的规则。比如我们的ascii码使用1个字节存储,可能别的字符集就使用2个字节存储。
-
字符集的校验规则,指的是字符集比较大小的时候依据的准则,比如我们比较a和B的大小,如果不考虑大小写,那么a<B,如果考虑大小写,则a>B,也就是说,同一字符集,不同的比较规则,对某列数据的排序结果也就会产生不同。
配置文件:
- 这些配置都可以在配置文件中设置为默认的,这样以后所以的表都是默认这种配置。
/etc/my.cnf #配置在此文件中