1、RocketMQ概述

1.1 MQ概述

1.1.1 MQ简介

  • MQ,Message Queue,是一种提供消息队列服务的中间件,也称为消息中间件,是一套提供了消息生产、存储、消费全过程API的软件系统。消息即数据。一般消息的体量不会很大。
    Read more »

  • 在任何数据库环境中,总会有不确定的意外情况发生,比如例外的停电、计算机系统中的各种软硬件故障、人为破坏、管理员误操作等是不可避免的,这些情况可能会导致数据的丢失服务器瘫痪等严重的后果。存在多个服务器时,会出现主从服务器之间的数据同步问题
  • 为了有效防止数据丢失,并将损失降到最低,应定期对MySQL数据库服务器做备份。如果数据库中的数据丢失或者出现错误,可以使用备份的数据进行恢复。主从服务器之间的数据同步问题可以通过复制功能实现。
    Read more »

1、主从复制概述

1.1 如何提升数据库并发能力

  • 在实际工作中,我们常常将Redis作为缓存与MySQL配合来使用,当有请求的时候,首先会从缓存中进行查找,如果存在就直接取出。如果不存在再访问数据库,这样就提升了读取的效率,也减少了对后端数据库的访问压力。Redis的缓存架构是高并发架构中非常重要的一环。

    Read more »

  • 我们在讲解数据库事务时,讲过两种日志:重做日志、回滚日志。
  • 对于线上数据库应用系统,突然遭遇数据库宕机怎么办?在这种情况下,定位宕机的原因就非常关键。我们可以查看数据库的错误日志。因为日志中记录了数据库运行中的诊断信息,包括了错误、警告和注释等信息。比如:从日志中发现某个连接中的SQL操作发生了死循环,导致内存不足,被系统强行终止了。明确了原因,处理起来也就轻松了,系统很快就恢复了运行。
  • 除了发现错误,日志在数据复制、数据恢复、操作审计,以及确保数据的永久性和一致性等方面,都有着不可替代的作用。
  • 千万不要小看日志 。很多看似奇怪的问题,答案往往就藏在日志里。很多情况下,只有通过查看日志才能发现问题的原因,真正解决问题。所以,一定要学会查看日志,养成检查日志的习惯,对提升你的数据库应用开发能力至关重要。
    Read more »

1、什么是MVCC?

  • MVCC (Multiversion Concurrency Control),多版本并发控制。顾名思义,MVCC是通过数据行的多个版本管理来实现数据库的并发控制。这项技术使得在InnoDB的事务隔离级别下执行一致性读操作有了保证。换言之,就是为了查询一些正在被另一个事务更新的行,并且可以看到它们被更新之前的值,这样在做查询的时候就不用等待另一个事务释放锁。

  • MVCC没有正式的标准,在不同的DBMS中MVCC的实现方式可能是不同的,也不是普遍使用的(大家可以参考相关的DBMS文档)。这里讲解InnoDB 中MVCC的实现机制(MySQL其它的存储引擎并不支持它)。

    Read more »

1、概述

  • 是计算机协调多个进程或线程并发访问某一资源的机制。在程序开发中会存在多线程同步的问题,当多个线程并发访问某个数据的时候,尤其是针对一些敏感的数据(比如订单、金额等),我们就需要保证这个数据在任何时刻最多只有一个线程在访问,保证数据的完整性一致性。在开发过程中加锁是为了保证数据的一致性,这个思想在数据库领域中同样很重要。
    Read more »

  • 事务有4种特性:原子性、一致性、隔离性和持久性。那么事务的四种特性到底是基于什么机制实现呢?
    • 事务的隔离性由锁机制实现。
    • 而事务的原子性、一致性和持久性由事务的redo日志和undo日志来保证。
      • REDO LOG 称为重做日志,提供再写入操作,恢复提交事务修改的页操作,用来保证事务的持久性
      • UNDO LOG 称为回滚日志,回滚行记录到某个特定版本,用来保证事务的原子性、一致性
        Read more »

1、数据库事务概述

  • 事务是数据库区别于文件系统的重要特性之一,当我们有了事务就会让数据库始终保持一致性,同时我们还能通过事务的机制恢复到某个时间点,这样可以保证已提交到数据库的修改不会因为系统崩溃而丢失。
    Read more »

1、数据库调优的措施

1.1 调优的目标

  • 尽可能节省系统资源,以便系统可以提供更大负荷的服务。(吞吐量更大)。
  • 合理的结构设计和参数调整,以提高用户操作响应的速度。(响应速度更快)
  • 减少系统的瓶颈,提高MySQL数据库整体的性能。
    Read more »

1、为什么需要数据库设计

  • 我们在设计数据表的时候,要考虑很多问题。比如:
    • 用户都需要什么数据?需要在数据表中保存哪些数据?
    • 如何保证数据表中数据的正确性,当插入、删除、更新的时候该进行怎样的约束检查
    • 如何降低数据表的数据冗余度,保证数据表不会因为用户量的增长而迅速扩张?
    • 如何让负责数据库维护的人员更方便地使用数据库?
    • 使用数据库的应用场景也各不相同,可以说针对不同的情况,设计出来的数据表可能千差万别
      Read more »