美文网首页
架构师——mysql

架构师——mysql

作者: 安然在路上 | 来源:发表于2020-02-23 11:45 被阅读0次

    maven:
    用nexus搭建私服:上传和下载jar包
    依赖冲突:最短路径/最先声明/excusion

    spring源码:
    bean的解析(生成beanDefinition),bean的注册(放到大map beanFactory中),bean的加载(从beanFactory中拿到bean)


    spring中的map
    @Transactional

    mysql:
    索引:是为了加速对表中数据行的检索而创建的一种分散存储的数据结构。
    索引能极大的减少存储引擎需要扫描的数据量;
    索引可以把随机IO变成顺序IO;
    索引可以帮助我们在进行分组、排序等操作时,避免使用临时表。

    索引使用的是b+树:
    二叉树 —> 平衡二叉树 —>AVL树(完全平衡二叉树,整棵树的高度差不会超过1)—> b树(多路平衡查找树)—> b+树

    B+树与B树的区别:
    有k个子结点的结点必然有k个关键码;
    非叶结点仅具有索引作用,跟记录有关的信息均存放在叶结点中。
    树的所有叶结点构成一个有序链表,可以按照关键码排序的次序遍历全部记录。

    缓存sql是缓存执行计划。
    show engines;支持啥引擎
    存储引擎:
    MyISAM:(5.5之前默认的存储引擎)文件:frm存储表结构(任何引擎都有),myd数据文件,myi索引文件 (数据和索引分开存放,所以非聚族索引),支持压缩,表级锁,支持全文检索。适用场景:非事务型应用(数据仓库,报表,日志数据),只读类应用,空间类应用(空间函数,坐标)
    Innodb:(5.5及以后默认的存储引擎)
    5.6之前默认系统表空间(所有的表数据放在一个文件中),5.6之后独立表空间 frm(存储表结构) ibd(数据加索引 聚族索引 独立表空间才会单独有这个文件) 系统表空间无法简单的收缩文件大小 独立表空间可以通过optimize table收缩系统文件 系统表空间会产生IO瓶颈 独立表空间可以同时向多个文件刷新数据
    是事务型引擎,完全支持事务ACID特性,Redo log和Undo log,行级锁(并发程度更高)

    myisam和innodb
    csv:数据以文本方式存储在文件 .csv 存储内容 .csm存储元数据如表状态和数据量 .frm 存储表结构 可以直接编辑数据。

    mysql中的锁:
    都是悲观锁,没有乐观锁。
    表锁:开销小,加锁快;不会出现死锁;锁粒度大 ,发生锁冲突的概率最高,并发度最低
    行级锁:开销大,加锁慢;会出现死锁;锁粒度最小,发生冲突的概率最低,并发度也最高。
    页面锁:介于行锁和表锁之间。

    myisam的表锁:
    表共享读锁(table read lock)
    表独占写锁(table write lock)
    创建读锁:
    lock table 表A read;
    // 在另一个session查询(查询)
    //在同一个session查询表A (查询)
    //在同一个session修改表A(报错)
    //在同一个session新增表B的记录或者查询表B的记录(报错)
    //在另一个session中,新增表A的记录 (会等待)
    //在另外的session中,新增其他的表(成功)
    如果有别名,锁失效

    创建写锁:
    lock table 表A write;
    总结:
    对myisam表的读操作,不会阻塞其他用户对用一表的读请求,但会阻塞对同一表的写请求
    对myisam表的读操作,不会阻塞当前session对表读,但对表进行修改会报错。
    一个session使用lock table命令给表F加了读锁,这个session可以查询锁定表中的记录,但更新或访问其他表会报错。
    读锁情况,另一个session可以查询表中的记录,但更新会出现锁等待。
    写锁,会阻塞其他用户对同一表的读和写操作。
    写锁,当前session可以对本表做CRUD,但对其他表进行操作会报错。


    事务的特性 (ACID):


    原子性,一致性,持久性,隔离性。
    并发带来的三个问题:
    脏读 :事务A读到了事务B未提交的数据
    不可重复读:事务A多次读的过程中,事务B更新并提交,导致事务A多次读取的数据不一致
    幻读:事务A开始的时候没有的数据,在后来出现,和不可重复读有点类似,侧重新增和删除;比如事务A将所有的成绩从分数换成等级的过程中,事务B新增了一条分数。

    事务的四种隔离级别
    innodb对隔离级别的支持程度 innodb中的锁
    共享锁和排它锁
    innodb行锁的原理

    相关文章

      网友评论

          本文标题:架构师——mysql

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