数据库面试题目(mysql、nosql)

一、索引

聚集索引、非聚集索引

都是B+树。前者B+树叶子节点包含数据,后者叶子节点包含数据地址

聚集索引优点:提升IO密集负载性能;缺点:插入代价高

索引缺点:维护索引耗时;占用空间大

建索引须知:建在wheregroup by,排序等列上;不建在性别等少数类别的列上

建索引不一定加速:索引没有查询所需字段

一年后DB变慢了:答题方向是cpu、磁盘、内存



二、Nosql

1、为什么有Nosql?

增加字段需要-->无格式

高并发需要-->转向内存

横向拓展需要-->以前是分库分表

关键:传统数据库需要“关系”,所有表存在同一台服务器中,是一个单机系统。

Nosql不使用关系,每条数据独立存储 

Nosql不需要:数据库一致性要求、读写的实时性、复杂sql查询


2、什么是NoSQL数据库?在哪些情况下使用和不使用NoSQL数据库?

NoSQL是非关系型数据库,NoSQL = Not Only SQL

关系型数据库采用的结构化的数据,NoSQL采用的是键值对的方式存储数据。两者是不同的数据存储结构

在考虑数据库的成熟度;支持;分析和商业智能;管理及专业性等问题时,应优先考虑关系型数据库。

在处理非结构化/半结构化的大数据时;在水平方向上进行扩展时;随时应对动态增加的数据项时可以优先考虑使用NoSQL数据库。  


3、非关系型数据库有哪些?MySQLMongoDB之间最基本的区别是什么?

非关系型数据库有:MongoDB(用得较多)、MembaseHypertable

关系型数据库与非关系型数据库的区别:数据存储结构的不同。

更多关于MongoDB问答详见:http://blog.csdn.net/shehun1/article/details/21240731 


4redismongodb

完全不同的东西。

mongodb:最像关系型数据库的nosql。相比redis,只是缓存了热点数据在内存

redisin-memory;丰富的数据结构;一般作为缓存,提高了并发性



5Nosqlshard(一致性哈希) 

复制,横向拓展,只支持更多的读请求;

分片,支持更多的读、写请求;

如果把日期设为分片,则不能享受并发性的写请求;



三、数据库的引擎

常用的引擎主要就是2个:InnodbMyIASM

1.简单介绍这两种引擎,以及该如何去选择。

a.Innodb引擎,Innodb引擎提供了对数据库ACID事务的支持。并且还提供了行级锁和外键的约束。(行级锁)它的设计的目标就是处理大数据容量的数据库系统。它本身实际上是基于Mysql后台的完整的系统。Mysql运行的时候,Innodb会在内存中建立缓冲池,用于缓冲数据和索引。但是,该引擎是不支持全文搜索的。同时,启动也比较的慢,它是不会保存表的行数的。当进行Select count(*) from table指令的时候,需要进行扫描全表。所以当需要使用数据库的事务时,该引擎就是首选。由于锁的粒度小,写操作是不会锁定全表的。所以在并发度较高的场景下使用会提升效率的。


b.MyIASM引擎,它是MySql的默认引擎,但不提供事务的支持,也不支持行级锁和外键。(表级锁)因此当执行Insert插入和Update更新语句时,即执行写操作的时候需要锁定这个表。所以会导致效率会降低。不过和Innodb不同的是,MyIASM引擎是保存了表的行数,于是当进行Select count(*) from table语句时,可以直接的读取已经保存的值而不需要进行扫描全表。所以,如果表的读操作远远多于写操作时,并且不需要事务的支持的。可以将MyIASM作为数据库引擎的首先。


总结:(1)大容量的数据集时趋向于选择Innodb。因为它支持事务处理和故障的恢复。Innodb可以利用数据日志来进行数据的恢复。主键的查询在Innodb也是比较快的。

(2)大批量的插入语句时(这里是INSERT语句)在MyIASM引擎中执行的比较的快,但是UPDATE语句在Innodb下执行的会比较的快,尤其是在并发量大的时候。 


2.两种引擎所使用的索引的数据结构是什么?

都是B+!

MyIASM引擎,B+树的数据结构中存储的内容实际上是实际数据的地址值。也就是说它的索引和实际数据是分开的,只不过使用索引指向了实际数据。这种索引的模式被称为非聚集索引

Innodb引擎的索引的数据结构也是B+树,只不过数据结构中存储的都是实际的数据,这种索引有被称为聚集索引。



四、数据库的锁

详见:http://blog.csdn.net/wuhuagu_wuhuaguo/article/details/79653840 



五、mysql4大特性和4大隔离级别

4大特性: ACID,即:原子性、一致性、隔离性、持久性

4大隔离级别:读未提交、读已提交、可重复读、可串行化、

数据库面试题目(mysql、nosql)_第1张图片

注意:其中对号表示产生了对应的问题,叉号表示解决了对应问题。



六、mysql分析优化—explain

https://www.cnblogs.com/yycc/p/7338894.html 


其他详见:

http://blog.csdn.net/u013599826/article/details/45419821 

https://www.cnblogs.com/xiaohaillong/p/6079551.html 

https://baijiahao.baidu.com/s?id=1585051786665190647&wfr=spider&for=pc 55mysql题目 


你可能感兴趣的:(mysql)