zoukankan      html  css  js  c++  java
  • 春招准备(二)——数据库方面知识

    1、数据库事务

    四个特性(ACID):原子性、一致性、隔离性、持久性

    •   原子性:原子性是指事务是一个不可分割的工作单位,事务中的操作要么全发生,要么都不发生
    •   一致性:如果事务执行之前是一个完整的状态,那么事务结束后,无论事务是否执行成功,数据库仍然是一个完整的状态
    •   隔离性:当多个用户访问数据库时,一个用户的事务不能被其他用户的事务所干扰,多个并发事务之间要数据隔离
    •   持久性:指一个事务一旦被提交,他对数据库的影响是永久性的。

    2、事务的隔离级别

    脏读

    未提交的事务进行数据修改对其他事务都是可见的,如果一个事务读到了其他事务未提交的数据就是脏读。

    不可重复读(大部分数据的的隔离级别是这个,mysql不是这个)

    在当前事务中,读取到了其他事务的更新和删除的数据(强调更新和删除)

    可重复读(mysql默认事务隔离级别)

    可以防止脏读、不可重复读,不能防止幻读

    序列化:数据库被设计为单线程,可以防止上述所有问题

    读已提交:可以防止脏读问题,但是不能防止 不可重复读/幻读问题。(oracle默认隔离级别)

    3、范式

    第一范式:每一个属性都不可再分,没有重复列或者重复组

    第二范式:每一个非主属性都完全依赖于候选码,不存在部分依赖

    第三范式:每一个非主属性不能传递依赖,消除传递依赖

    BF范式:每一个决定因素中都有码,决定性因素子集中有码,消除任何属性对键的传递函数和部分函数依赖

    4、Mysql存储引擎

    存储引擎是数据库管理系统用来从数据库创建、读取和更新数据的软件模块。MySQL中有两种类型的存储引擎:事务性和非事务性。

    对于MySQL 5.5及更高版本,默认的存储引擎是InnoDB。在5.5版本之前,MySQL的默认存储引擎是MyISAM。

    5、Mysql行级锁

     乐观锁和悲观锁

      乐观锁:每次去哪数据的时候都认为别人不会修改,所以不会上锁,乐观锁适用于多读的应用类型

      悲观锁:悲观锁每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边 就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。

    共享锁
    又称读锁,是读取操作创建的锁,其它用户可以并发读取数据,但是任何事务都不能对数据进行修改。如果事务T对数据加上共享锁后,其它事务只能对A再加共享锁,不能加排他锁。

    排他锁
    又称写锁,如果事务T对数据A加上排他锁后,则其他事务不能再对A加任任何类型的锁。获准排他锁的事务既能读数据,又能修改数据。

    6、索引

    索引是一种数据结构可以帮我们快速检索数据库中的数据

    索引类型

    • 主键索引:主键是一种唯一性索引,但它必须指定为PRIMARY KEY,每个表只能有一个主键。
    • 唯一索引:索引列的所有值都只能出现一次,即必须唯一,值可以为空。
    • 普通索引:基本的索引类型,值可以为空,没有唯一性的限制。
    • 全文索引:全文索引的索引类型为FULLTEXT。全文索引可以在varchar、char、text类型的列上创建。可以通过ALTER TABLE或CREATE INDEX命令创建。

    索引的数据结构

     hash索引:Hash索引底层是哈希表,哈希表是一种以key-value存储数据的结构,所以多个数据在存储关系上是完全没有任何顺序关系的,所以,对于区间查询是无法直接通过索引查询的,就需要全表扫描。所以,哈希索引只适用于等值查询的场景。

     B+ tree索引:B+树是一种多路平衡查询树,他的节点是天然有序的(左节点<根节点,根节点<右节点),所以查询范围的时候不需要全表扫描

    其他区别:hasn索引适合做等值查询但是无法做范围查询;hasn索引没法利用索引进行排序;如果有大量重复键值情况下,哈希索引效率很低,可能存在哈希碰撞

     

  • 相关阅读:
    关于lucene断点续索引和增量索引的问题
    发布一个关于统计时间段的MDX语句
    【蛙蛙推荐】想设计一个关于软件开发的元搜索引擎,希望大家支持
    python中and和or的用法
    Hadoop实战中高级部分 之 Hadoop MapReduce高级编程
    (转)对实时分析与离线分析的思考(二)
    数据分析站点导航
    MapReduce:详解Shuffle过程
    分析能力的8个等级(My Level)
    (转)Tire Tree
  • 原文地址:https://www.cnblogs.com/9797ch/p/12296703.html
Copyright © 2011-2022 走看看