发展史
数据库连接
获取 MySQL 数据库连接,需要 MySQL 服务开启,指明数据库的 IP 地址、端口号、 用户名、密码。然后,导入 MySQL 的驱动,网络编程中的 url 就是你要访问的远程 数据库的地址
网络通信大部分都是基于 TCP/IP 协议,数据传输之前,双方通过“三次握手”建立 连接,当数据传输完成之后,又通过“四次挥手”释放连接。
长、短连接是相对通信时间而言的。长连接相对短连接而言,多了一个保持连接的 过程,可以在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数 据包发送,需要双方发链路检测包。
基于 TCP/IP 协议,频繁的连接创建和销毁都需要消耗资源。连接池将已经创建好的 连接保存在池中,当有请求来时,直接使用已经创建好的连接进行访问,省略了创 建连接和销毁连接的过程。
当应用抽象为表时,需要转化事务逻辑。设计结构的长度越小越好,类型越简单越 好。判断决定列的类型,是数值类型、字符串类型或时间类型。
语言介绍
1.DDL
用来定义数据库对象:库、表、列等;
适用范围:对数据库中的某些对象(例如,database,table)进行管理,如Create,Alter和Drop.
注意: 在生产环境中,DDL类操作需要慎用,因为不能做roolback操作,一旦执行无法回退。
2.DML
对数据库中的数据进行一些简单操作,,如insert,delete,update,select(插入、删除、修改、检索)等都是DML.
对select来说,它有两种划分方法,可以放在DML,也可以单独放在DQL
3.DQL
用来查询记录(数据)。
基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块:
SELECT <字段名表>FROM <表或视图名>WHERE <查询条件>
4.DCL
用来定义访问权限和安全级别。
数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等
数据库 CURD
Create(创建)、Update(更新)、Retrieve(读取)和 Delete(删除)
索引查询
包含所有满足查询需要的数据的索引称为覆盖索引,mysql 利用索引返回 select 列表中的字段,而不必根据索引再次回表读取数据页。 组合索引。对查询语句中多个常用字段建立索引,并不是要将查询条件中的所有字 段都放在一个索引中。尽量让一个索引被多个 Query 语句利用。 尽量减少同一个表上的索引数量,减少数据更新导致的索引更新成本,还可以减少 因为索引所消耗的存储空间。
sql查询
在大事物和小事物上要尽量避免大事物,因为一条 SQL 只能在一个 CPU 上运算。 如果对于类似高并发的场景,一条大 SQL 并发量特别大占用通道一秒,导致后续的 一直在等,最后雪崩。 所以,尽量拆解成多条简单 SQL。因为简单 SQL 缓存命中率更高,可以减少锁表时 间,用上多 CPU。
MySQL 单例数据库架构
主要有网络连接层、核心服务层、存储引擎、文件系统
Parser 层
所谓 parser,一般是指把某种格式的文本(字符串)转换成某种数据结构的过程。最常见的 parser,是把程序文本转换成编译器内部的一种叫做“抽象语法树”(AST)的数据结构。也有简单一些的 parser,用于处理 CSV,JSON,XML 之类的格式