Java_第一季_java高级_Redis持久化、MySql何时建立索引

1、redis持久化

Redis提供了两种不同的持久化方式:

RDB(Redis DataBase):

  在指定的时间间隔内将内存中的数据集快照写入磁盘,恢复时将快照文件读到内存里;

    备份是如何执行的:

      Redis会单独创建一个子进程(fork)来进行持久化,会先将数据写入到一个临时文件中,待持久化过程结束时,

      再用这个临时文件替换上次持久化好的文件,在整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能;

      如果需要进行大规模的数据恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加高效。RDB的缺点是最后一次持久化的数据可能会丢失;

 

  优点:

    节省磁盘空间、恢复速度快;

  缺点:

    虽然Redis在fork时使用了写时拷贝技术,但如果数据庞大时,还是比较消耗性能的;

    在备份周期,在一定时间间隔做一次备份,所以如果Redis意外down掉的话,就会丢失最后一次快照后的所有修改

    

AOF(Append Of File):

  以日志的形式记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件,但不可以改写文件,

  Redis再启动之初会读取该文件重新构建数据,换言之,Redis重启之后会根据日志文件的内容将写指定从前到后执行一次,以完成数据的恢复;

 

  优点:

    备份机制更加稳健,丢失数据概率更低;

    可读的日志文本,通过操作AOF文件,可以处理误操作;

  缺点

    比起RDB占用更多的磁盘空间;

    恢复备份速度更慢;

    每次读写都同步的话,有一定的性能压力;

    存在个别的BUG,造成没办法恢复;

 

 

2、MySql什么时候建立索引? 

索引:索引(index)是帮助mysql高效获取数据的数据结构;

优势:提高数据的检索效率,降低数据库的IO成本,通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗;

劣势:索引会占用磁盘空间,虽然提高了查询的效率,但降低了增、删、改的效率;

 

哪些情况适合创建索引:

  主键自动建立唯一索引;

  频繁作为查询条件的字段;

  查询中与其它表关联的字段,外键关系建立索引;

  单键/组合索引的选择问题:组合索引性价比更高;

  查询中排序的字段;

  查询中统计或分组的字段;

 

哪些情况不适合创建索引:

  表记录数据太少;

  经常增、删、改的表或者字段;

  where条件里用不到的字段;

  过滤性不好的字段;(例如性别,每次只能筛选一半的数据)

posted @ 2021-02-24 16:45  DHaiLin  阅读(93)  评论(0编辑  收藏  举报