• 数据库面试


    一、关系数据库

    什么是范式:简言之就是,数据库设计对数据的存储性能,还有开发人员对数据的操作都有莫大的关系。所以建立科学的,规范的的数据库是需要满足一些

    规范的来优化数据数据存储方式。在关系型数据库中这些规范就可以称为范式。

    什么是三大范式:

    第一范式:当关系模式R的所有属性都不能在分解为更基本的数据单位时,称R是满足第一范式的,简记为1NF。满足第一范式是关系模式规范化的最低要

    求,否则,将有很多基本操作在这样的关系模式中实现不了。

    第二范式:如果关系模式R满足第一范式,并且R得所有非主属性都完全依赖于R的每一个候选关键属性,称R满足第二范式,简记为2NF。

    第三范式:设R是一个满足第一范式条件的关系模式,X是R的任意属性集,如果X非传递依赖于R的任意一个候选关键字,称R满足第三范式,简记为3NF.

    二、非关系数据库Redis

    1.什么是redis?

       Redis 是一个基于内存的高性能key-value数据库。 

      2.Reids的特点  

       Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性

         能最快的Key-Value DB。

       Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,不像 memcached只能保存1MB的数据,因此Redis可以用来实现很多有用的功能,比方说用他的List来做FIFO双向链表,实现一个轻量级的高性 能消

         息队列服务,用他的Set可以做高性能的tag系统等等。另外Redis也可以对存入的Key-Value设置expire时间,因此也可以被当作一 个功能加强版的memcached来用。

       Redis的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。

      3.使用redis有哪些好处?   

       (1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1) 
       (2) 支持丰富数据类型,支持string,list,set,sorted set,hash 
       (3) 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行 
       (4) 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除

      4.redis相比memcached有哪些优势?   

       (1) memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型 
       (2) redis的速度比memcached快很多 (3) redis可以持久化其数据

      5.Memcache与Redis的区别都有哪些?    

       1)、存储方式 Memecache把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小。 Redis有部份存在硬盘上,这样能保证数据的持久性。 
       2)、数据支持类型 Memcache对数据类型支持相对简单。 Redis有复杂的数据类型。 
       3)、使用底层模型不同 它们之间底层实现方式 以及与客户端之间通信的应用协议不一样。 Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。 

      6.redis常见性能问题和解决方案:   

       1).Master写内存快照,save命令调度rdbSave函数,会阻塞主线程的工作,当快照比较大时对性能影响是非常大的,会间断性暂停服务,所以Master最好不要写内存快照。

       2).Master AOF持久化,如果不重写AOF文件,这个持久化方式对性能的影响是最小的,但是AOF文件会不断增大,AOF文件过大会影响Master重启的恢复速度。Master最好不要做任何持久化工作,包括内存快照和AOF日志文件,特别是不要启用内存快照做持久

        化,如果数据比较关键,某个Slave开启AOF备份数据,策略为每秒同步一次。

       3).Master调用BGREWRITEAOF重写AOF文件,AOF在重写的时候会占大量的CPU和内存资源,导致服务load过高,出现短暂服务暂停现象。

       4). Redis主从复制的性能问题,为了主从复制的速度和连接的稳定性,Slave和Master最好在同一个局域网内

  • 相关阅读:
    Swift基础
    win32多线程 (六)信号量 Synchronization
    win32 多线程 (五)Event
    win32多线程 (四) Mutex
    win32多线程(三) 死锁
    win32多线程 (二)线程同步之临界区 (critical sections)
    win32多线程 (一) 线程创建与结束等待
    简单Factory模式
    单键模式
    jquery中click事件重复绑定问题
  • 原文地址:https://www.cnblogs.com/threetop/p/9396567.html
Copyright © 2020-2023  润新知