02-MySQL数据库

作者: 紫荆秋雪_文 | 来源:发表于2021-05-06 13:56 被阅读0次

    一、MySQL三大范式

    MySQL的三大范式能够规范开发人员对数据表的设计,使得开发人员能够设计出简洁、优雅的数据表结构

    1.1、第一范式

    第一范式主要是确保数据表中每个字段的值必须具有原子性,也就是说数据表中每个字段的值为不可再次拆分的最小数据单元

    1.2、第二范式

    第二范式是指在第一范式的基础上,确保数据表中除了主键之外的每个字段都必须依赖主键。

    1.3、第三范式

    第三范式是在第二范式的基础上,确保数据表中的每一列都和主键字段直接相关,也就是说,要求数据表中的所有非主键字段不能依赖其他非主键字段

    1.4、反范式化

    如果数据库中的数据量比较大,系统的UV和PV访问频次比较高,则完全按照MySQL的三大范式设计数据表,读数据时会产生大量的关联查询,在一定程度上会影响数据库的读性能。此时,可以通过在数据表中增加冗余字段来提高数据库的读性能

    二、MySQL存储引擎

    存储引擎在MySQL底层以组件的形式提供,不同的存储引擎提供的存储机制、索引的存放方式和锁粒度等不同

    2.1、查看MySQL中的存储引擎

    SHOW ENGINES
    
    查看MySQL中的存储引擎.png

    2.2、常用存储引擎

    2.2.1、InnoDB存储引擎

    • 1、支持事务
    • 2、锁级别为行锁,比 MyISAM 存储引擎支持更高的并发
    • 3、能够通过二进制日志恢复数据
    • 4、支持外键操作
    • 5、在索引存储上,索引和数据存储在同一个文件中,默认按照B+Tree组织索引的结构。同时,主键索引的叶子节点存储完整的数据记录,非主键索引的叶子节点存储主键的值
    • 6、在 MySQL5.6版本之后,默认使用 InnoDB存储引擎
    • 7、在 MySQL5.6版本之后,InnoDB存储引擎支持全文索引

    2.2.2、MyISAM存储引擎

    • 1、不支持事务
    • 2、锁级别为表锁,在要求高并发的场景下不太适用
    • 3、如果数据文件损坏,难以恢复数据
    • 4、不支持外键
    • 5、在索引存储上,索引文件与数据文件分离
    • 6、支持全文索引

    2.2.3、MEMORY存储引擎

    • 1、不支持TEXT和BLOB数据类型,只支持固定长度的字符串类型。如,在memory存储引擎中,会将varchar类型自动转化成char类型
    • 2、锁级别为表锁,在高并发场景下会成为瓶颈
    • 3、通常会被作为临时表使用,存储查询数据时产生中间结果
    • 4、数据存储在内存中,重启服务器后数据会丢失。如果是需要持久化的数据,不适合存储在memory存储引擎的数据表中

    2.2.4、ARCHIVE存储引擎

    • 1、支持数据压缩,在存储数据前会对数据进行压缩处理,适合存储归档的数据
    • 2、只支持数据的插入和查询,插入数据后,不能对数据进行更改和删除,而只能查询
    • 3、只支持在整数自增类型的字段上添加索引

    2.2.5、CSV存储引擎

    • 1、主要存储的是.csv格式的文本数据,可以直接打开存储的文件进行编辑
    • 2、可以将MySQL中某个数据表中的数据直接导出为.csv文件,也可以将.csv文件导入数据表中

    2.2.6、MySQL 官方文档

    2.2.7、InnoDB 官方文档

    相关文章

      网友评论

        本文标题:02-MySQL数据库

        本文链接:https://www.haomeiwen.com/subject/xrgrdltx.html