1、关系型数据库
2、什么是NoSql(非关系型数据库)
3、nosql和关系型数据库比较
4、redis
5、● 请问redis的List能在什么场景下使用?
6、redis持久化
7、● 请分别介绍一下aof和rdb都有哪些优点?以及两者有何区别?
8、● 请问,redis为什么是单线程?
9、● 简单说一说,缓存的优点是什么?
10、● 请问,为什么 redis 读写速率快、性能好?
11、● 说一说,MVC的各个部分都有那些技术来实现?如何实现?
12、事务的基本要素(ACID)
13、事务的并发问题
14、MySQL事务隔离级别
15、有哪些锁?介绍一下
16、什么是死锁?怎么解决?
17、什么是数据库连接池?
18、介绍索引
19、怎样对数据库进行优化
20、数据库索引了解吗
21、说说自己对于 MySQL 常见的两种存储引擎:MyISAM与InnoDB的理解
22、视图的作用,视图可以更改么?
23、对于大表的常见优化手段说一下
24、drop,delete与truncate的区别
25、范式
26、强一致性、弱一致性、最终一致性
27、JDBC连接数据库的步骤
28、● 请你说明一下 left join 和 right join 的区别?
29、● 请你讲讲 Statement 和 PreparedStatement 的区别?哪个性能更好?
30、● 请你谈谈JDBC的反射,以及它的作用?
31、游标
32、mysql存储过程
练习题见链接:
https://blog.youkuaiyun.com/u014138443/article/details/90294093
详细redis内容见:
https://blog.youkuaiyun.com/u014138443/article/details/90294052
1、关系型数据库
关系型数据库,是指采用了关系模型来组织数据的数据库。
简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。
关系型数据库的优点:
容易理解:二维表结构是非常贴近逻辑世界的一个概念,关系模型相对网状、层次等其他模型来说更容易理解
使用方便:通用的SQL语言使得操作关系型数据库非常方便
易于维护:丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大减低了数据冗余和数据不一致的概率
关系型数据库的瓶颈
1).高并发读写需求
网站的用户并发性非常高,往往达到每秒上万次读写请求,对于传统关系型数据库来说,硬盘I/O是一个很大的瓶颈
2).海量数据的高效率读写
网站每天产生的数据量是巨大的,对于关系型数据库来说,在一张包含海量数据的表中查询,效率是非常低的
3).高扩展性和可用性
在基于web的结构当中,数据库是最难进行横向扩展的,当一个应用系统的用户量和访问量与日俱增的时候,数据库却没有办法像web server和app server那样简单的通过添加更多的硬件和服务节点来扩展性能和负载能力。对于很多需要提供24小时不间断服务的网站来说,对数据库系统进行升级和扩展是非常痛苦的事情,往往需要停机维护和数据迁移。
2、什么是NoSql(非关系型数据库)
NoSql(Not Only SQL)
非关系型数据库提出另一种理念,例如,以键值对存储,且结构不固定,每一个元组可以有不一样的字段,每个元组可以根据需要增加一些自己的键值对,这样就不会局限于固定的结构,可以减少一些时间和空间的开销。使用这种方式,用户可以根据需要去添加自己需要的字段,这样,为了获取用户的不同信息,不需要像关系型数据库中,要对多表进行关联查询。仅需要根据id取出相应的value就可以完成查询。但非关系型数据库由于很少的约束,他也不能够提供像SQL所提供的where这种对于字段属性值情况的查询。并且难以体现设计的完整性。他只适合存储一些较为简单的数据,对于需要进行较复杂查询的数据,SQL数据库显的更为合适。
3、nosql和关系型数据库比较
1)成本:nosql数据库简单易部署,基本都是开源软件,不需要像使用oracle那样花费大量成本购买使用,相比关系型数据库价格便宜。
2)查询速度:nosql数据库将数据存储于缓存之中,关系型数据库将数据存储在硬盘中,自然查询速度远不及nosql数据库。
3)存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,所以可以存储基础类型以及对象或者是集合等各种格式,而数据库则只支持基础类型。
4)扩展性:关系型数据库有类似join这样的多表查询机制的限制导致扩展很艰难。
5)nosql不适合复杂查询,复杂查询需要用sql数据库
4、redis
redis是一种高级的key-value的存储系统,是一种nosql数据库
其中的key是字符串类型,尽可能满足如下几点:
1)key不要太长,最好不要操作1024个字节,这不仅会消耗内存还会降低查找 效率
2)key不要太短,如果太短会降低key的可读性
3)在项目中,key最好有一个统一的命名规范(根据企业的需求)
其中value 支持五种数据类型:
1)字符串型 string
2)字符串列表 lists
3)字符串集合 sets
4)有序字符串集合 sorted sets
5)哈希类型 hashs
5、● 请问redis的List能在什么场景下使用?
Redis 中list的数据结构实现是双向链表,所以可以非常便捷的应用于消息队列(生产者 / 消费者模型)。消息的生产者只需要通过lpush将消息放入 list,消费者便可以通过rpop取出该消息,并且可以保证消息的有序性。如果需要实现带有优先级的消息队列也可以选择sorted set。而pub/sub功能也可以用作发布者 / 订阅者模型