一。Mysql内部整个结构和执行流程
MySQL简易模块图:
简易图:1.连接/线程处理:主要负责连接和线程处理、授权认证、安全。
当客户端连接到mysql服务器时,服务器需要对其进行认证,认证基于用户名,原始主机信息和密码。
后期文章会首发于本专栏,也会不定时发放福利 ,欢迎关注,点赞
JAVA高级进阶zhuanlan.zhihu.com2.查询缓存/解析器:功能有解析,分析,优化,缓存,内置函数。
mysql解析查询并创建内部数据结构(解析树),然后对其优化,包括重写查询、决定表的读取顺序,以及选择合适的索引。优化器会请求存储引起提供容量或某个具体的开销信息,以及表数据的统计信息等。
3.存储引擎:负责Mysql中数据存储和提取。
数据库范式
第一范式:字段列不可分,如:【联系人】(姓名,性别,电话),一个联系人有家庭电话和公司电话,不符合 1NF;
第二范式:有主键,非主键字段完全依赖主键。如:订单明细表【OrderDetail】(OrderID,ProductID,UnitPrice,Discount,Quantity,ProductName),Discount(折扣),Quantity(数量)完全依赖(取决)于主键(OderID,ProductID),而 UnitPrice,ProductName 只依赖于 ProductID,不符合2NF;
第三范式:非主键字段不能相互依赖(如:非主键列 A 依赖于非主键列 B,非主键列 B 依赖于主键的情况),
每列都与主键有直接关系,不存在传递依赖。如:订单表【Order】(OrderID,OrderDate,CustomerID,CustomerName,CustomerAddr,CustomerCity)主键是(OrderID),CustomerName,CustomerAddr,CustomerCity 直接依赖的是 CustomerID(非主键列),而不是直接依赖于主键,它是通过传递才依赖于主键,所以不符合 3NF。
1)锁
处理并发读或写时,可以通过实现一个由两种类型的锁组成的锁系统拉埃解决。
也就是共享锁(s