自己的学习成长日记313

昨天晚上又熬夜了,看手机玩到早上4点多,现在也不知道咋啦睡觉都要听着抖音解说电影,在我爸这没有网,跟楼下用一个无线网,只有晚上才有,这几天我就吧mysq关系数据的内容全部复习一下,常用的语法,基本的理论知识,优化操作。首先梳理一下数据库的一些知识点。
尽可能的把学习的内容整个流程理解明白,临时吐槽一下,刚才他们找我包宿,不知道咋想的,他们都有事情做,多余的时间不干点别点,就知道玩!我现在没收入,也出不去,自己要是不自律哪真的一点救没有了。
mysql 是一个关系数据库, 关系数据库就是采用关系模型,以表格的方式来存储和管理数据的,提供了多种存储引擎,MyISAM,InnoDB,Memory (慢波瑞),archive(奥儿开服)
存储引擎的区别:
MyIsam 不支持事务,表锁,使用的非聚集索引 ,对外建没有支持,占用的内存相对比较少,
InnoDB 支持事务,行级锁, 聚集索引,支持外键(与其它表建立联系,主表和从表进行关联),支持崩溃后的回复能力(通过log 日志)适合频繁更新,删除的操作
Memory,所有的数据都存在内存中,所以处理数据速度比较快,但是安全性不高,不支持事务,不适合键大表。用来做临时表

数据库事务四大特性ACID ,原子性,一致性,隔离性,持久性,
系统多线程并发操作事务时,有数据安全隐患,比如脏读,幻读,不可重复读,丢失修改,
脏读一个事务读取到另一个事务未提交的数据,幻读是一个事务读取到另一个事务提交的数据,不可重复是一个事务多次提交查看结果不同,幻读通过插入的操作引起的,不可重复是更新,删除的操作引起。
数据库事务有四个隔离级别,读未提交,读已提交,可重复读,串行化,通过排他锁,共享锁,实现的,锁的级别逐渐递增。
读未提交可以解决数据丢失的问题,修改的时候添加了排他锁,读取的时候没有加锁,
读已提交,解决脏读的问题,写的时候加排他锁,读时候加共享锁,读取完以后就释放共享锁,
可重复读,解决不可重复读,和脏读的问题,写家锁,读也加锁,等提交完在释放锁,
串行化的单线程,逐个执行,安全级别最高,性能最差,
存储引擎使用场景
MyIsam :大量的添加操作,并且对事务没有要求的话,mysam性能回更好一些
InnoDB :大量更新操作,特别是并发的场景 Innodb性能回更好一些。
索引的概念:
索引就是对数据库表中的值进行排序的数据结构, MyIsam 和InnoDB Hash 都是通过B+树的数据结构作为索引。
每创建一个索引都会按照B+树的数据结构创建出来,索引分为聚集索引和非聚集索引(注:聚集索引不是单独的索引类型,是一种数据存储的方式)不同的引擎对聚集索引和非聚集索引的实现方式不同,除了聚集索引以外都属于非聚集索引,对非聚集索引进行细分成,普通索引,唯一索引,全文索引,复合索引(联合索引),
聚集索引和非聚集索引区别,聚集索引一个表只能有一个,在默认的情况下会把主键设置会聚集索引(不设置的话也会自动创建一个聚集索引),叶子节点存放的是数据信息,非聚集索引一个表可以有多个,存储的是主键的id ,通过主键的id查找到数据信息。
整理一下看的我晕头转向的。
聚集索引:索引的排序方式和表中数据的排序方式一致
非聚集索引:索引的位置与物理存储位置不同
密稠索引:每个索引值都对应的一个索引项,可以更快的定位信息,
稀疏索引:只为某些搜索码建立索引记录
innodb 表数据本身就是一个b+树索引结构,主键索引 树的叶子节点保存的完整的数据信息, 辅助索引叶子节点信息保存的是主键(指向的就是聚集索引),优点适合范围查找索引的值都是顺序排列的。查询也更快数据和索引在一个文件中,缺点就是频繁的变更会改别树结构,消耗性能。只能有一个密集索引(主键被定义以后,作为密集索引)
mylsam 是非聚集索引,索引和信息在不同的文件下,分离的,不管什么索引下面都是指向数据的地址指针,根据信息地址搜索相对的数据信息,。都是稀疏索引
大概的理论知识整理这些,明天把优化,语法,继续整理和巩固

posted @ 2023-03-13 22:52  纠结取个什么名字  阅读(35)  评论(0)    收藏  举报