当前位置:Gxlcms > 数据库问题 > 数据库

数据库

时间:2021-07-01 10:21:17 帮助过:3人阅读

这几天,要开始面试了,数据库无疑是各家面试的重头之一,在此总结一下数据库的一些知识点。

数据库:

  数据库表面上就是一系列的表格,包含的属性主要有:

约束:  

  主键约束:唯一标志一个数据库

  外键约束:用来连接标语表之间的关系

  唯一性约束:

索引:原理(B Tree  /  B+ Tree)

  数据库对一个属进行普通的检索的时候,需要从头到尾进行遍历,直到查到相应的数据,如果数据量巨大的话则相应的开销也是相当大,不利于实际使用,于是索引诞生

  对我们需要频繁进行查找的列进行设置索引,则,下次搜索的时候可以直接搜索索引一列,而不需要全盘搜索,又因为BTree的作用,可以将这其中的搜索时间呈指数式减少

  比如: 有100000000条某数据,现在要在其中检索出某个数值,最差情况下要检索10000000次,而如果设置索引,根据BTree的深度,可以下降到10(B树的深度即需要检索的次数),甚至更少。

  索引优点:可以更快的检索数据

  既然索引这么方便,为什么不给每个列设置一个索引,以方便使用,这是因为,索引需要占据实际的物理空间,且每次对相应的列进行增删改的时候,都需要相应的修改索引,因此,在过多的不需要频繁查询的列设置索引只会增加维护的难度,总结:对索引进行查找省时间,索引占空间,维护耗时间。所以需要综合考虑,达到一个最完美的状态,少了达不到效果,多了增加消耗。

存储过程:

  将一系列的SQL指令封装起来,进行预编译,以备以后的使用,且可以提高使用的速度

存储引擎:

  将数据以不同的技术存储到数据库中,其中的每一种技术都使用不同的存储机制、索引技巧、锁定水平、并且最终提供广泛不同的功能和能力。

  最主要的两种:

    MyISAM:  它不支持事务,也不支持外键,尤其是访问速度快,对事务完整性没有要求或者以SELECT、INSERT为主的应用基本都可以使用这个引擎来创建表。      

    InnoDB:  支持事务,外键等,在需要事务支持,并且需要较高的并发读取频率可以使用InnoDB。

      1.更新密集的表。InnoDB存储引擎特别适合处理多重并发的更新请求。
      2.事务。InnoDB存储引擎是支持事务的标准MySQL存储引擎。
      3.自动灾难恢复。与其它存储引擎不同,InnoDB表能够自动从灾难中恢复。
      4.外键约束。MySQL支持外键的存储引擎只有InnoDB。
      5.支持自动增加列AUTO_INCREMENT属性。   

    MEMORY: 只支持长度不变的格式的数据,逻辑存储介质为系统内存,因此在守护进程崩溃时所有MEMORY数据都会丢失。在对速度要求很高的情况下适合 

      1.目标数据较小,而且被非常频繁地访问。在内存中存放数据,所以会造成内存的使用,可以通过参数max_heap_table_size控制Memory表的大小,

       设置此参数,就可以限制  Memory表的最大大小。

      2.如果数据是临时的,而且要求必须立即可用,那么就可以存放在内存表中。

      3.存储在Memory表中的数据如果突然丢失,不会对应用服务产生实质的负面影响。

    如何选择引擎:

      (1)是否需要支持事务;
      (2)是否需要使用热备;
      (3)崩溃恢复:能否接受崩溃;
      (4)是否需要外键支持;

事务:要做的或在做的事情

  4个特性ACID:

    A原子性:事务要么都成功,要么都失败,比如:甲给乙转100元,该事务结果要么成功甲-100,乙+100,要么失败甲不变,乙不变(失败,事务会回滚到最初状态);不存在,甲不变乙+100这种可能;

    C一致性:一致性在原子性基础之上,还是上面的例子,假设甲只有100元,乙有0元,则在经过一次转账事务后,无论成功失败,甲乙两人加起来共都只会有100元,不会多,不会少

    I隔离性:一个事物的执行不能被其他事物所影响的特性;

    D持久性:一个事物执行成功后,结果会持久的写进数据库保存起来;

  


    

  

数据库

标签:内存   方便   sql   表之间   auto   size   访问速度   守护进程   就是   

人气教程排行