标签:内存 方便 sql 表之间 auto size 访问速度 守护进程 就是
这几天,要开始面试了,数据库无疑是各家面试的重头之一,在此总结一下数据库的一些知识点。
数据库:
数据库表面上就是一系列的表格,包含的属性主要有:
约束:
主键约束:唯一标志一个数据库
外键约束:用来连接标语表之间的关系
唯一性约束:
索引:原理(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 访问速度 守护进程 就是
原文地址:https://www.cnblogs.com/x43125/p/11329946.html