数据库
文章平均质量分 81
fangzhan666
这个作者很懒,什么都没留下…
展开
-
《MySQL 实战 45 讲》课程学习笔记(五)
数据库锁:全局锁、表锁和行锁根据加锁的范围,MySQL 里面的锁大致可以分成全局锁、表级锁和行锁三类。全局锁全局锁就是对整个数据库实例加锁。MySQL 提供了一个加全局读锁的方法,命令是 Flush tables with read lock (FTWRL)。当你需要让整个库处于只读状态的时候,可以使用这个命令,之后其他线程的以下语句会被阻塞:数据更新语句(数据的增删改)、数据定义语句(包括建表、修改表结构等)和更新类事务的提交语句。全局锁的典型使用场景是,做全库逻辑备份。也就是把整原创 2023-07-30 23:36:24 · 213 阅读 · 0 评论 -
《MySQL 实战 45 讲》课程学习笔记(四)
深入浅出索引索引的出现其实就是为了提高数据查询的效率,就像书的目录一样。索引的常见模型哈希表哈希表是一种以键 - 值(key-value)存储数据的结构,我们只要输入待查找的值即 key,就可以找到其对应的值即 Value。哈希的思路很简单,把值放在数组里,用一个哈希函数把 key 换算成一个确定的位置,然后把 value 放在数组的这个位置。不可避免地,多个 key 值经过哈希函数的换算,会出现同一个值的情况。处理这种情况的一种方法是,拉出一个链表。哈希表这种结构适用于只有等值查询的原创 2023-07-30 23:24:11 · 615 阅读 · 0 评论 -
《MySQL 实战 45 讲》课程学习笔记(三)
在可重复读隔离级别下,事务在启动的时候就“拍了个快照”。按照可重复读的定义,一个事务启动的时候,能够看到所有已经提交的事务结果。但是之后,这个事务执行期间,其他事务的更新对它不可见。对于当前事务的启动瞬间来说,一个数据版本的 row trx_id,有以下几种可能:一个数据版本,对于一个事务视图来说,除了自己的更新总是可见以外,有三种情况:事务的可重复读的能力是怎么实现的?原创 2023-07-30 22:56:15 · 478 阅读 · 0 评论 -
《MySQL 实战 45 讲》课程学习笔记(二)
日志系统:一条 SQL 更新语句是如何执行的?与查询流程不一样的是,更新流程还涉及两个重要的日志模块:redo log(重做日志)和 binlog(归档日志)。重要的日志模块:redo logMySQL 的 WAL 技术WAL 的全称是 Write-Ahead Logging,它的关键点就是先写日志,再写磁盘。当有一条记录需要更新的时候,InnoDB 引擎就会先把记录写到 redo log 里面,并更新内存,这个时候更新就算完成了。InnoDB 引擎会在适当的时候,将这个操作记录更新到原创 2023-07-30 19:02:42 · 462 阅读 · 0 评论 -
《MySQL 实战 45 讲》课程学习笔记(一)
一般语法错误会提示第一个出现错误的位置。原创 2023-07-30 17:21:44 · 347 阅读 · 0 评论 -
《Redis 核心技术与实战》课程学习笔记(八)
Redis 有一种底层数据结构,叫压缩列表(ziplist),这是一种非常节省内存的结构。原创 2023-07-11 13:53:29 · 381 阅读 · 0 评论 -
《Redis 核心技术与实战》课程学习笔记(七)
切片集群:数据增多了,是该加内存还是加实例?切片集群,也叫分片集群,就是指启动多个 Redis 实例组成一个集群,然后按照一定的规则,把收到的数据划分成多份,每一份用一个实例来保存。如何保存更多数据?Redis 应对数据量增多有两种方案:纵向扩展(scale up)和横向扩展(scale out)。纵向扩展:升级单个 Redis 实例的资源配置,包括增加内存容量、增加磁盘容量、使用更高配置的 CPU。横向扩展:横向增加当前 Redis 实例的个数。在面向百万、千万级别的用户规模时,横向扩原创 2023-07-11 01:34:37 · 474 阅读 · 0 评论 -
《Redis 核心技术与实战》课程学习笔记(六)
在 Redis 主从集群中,哨兵机制是实现主从库自动切换的关键机制。原创 2023-07-11 01:22:32 · 387 阅读 · 0 评论 -
《Redis 核心技术与实战》课程学习笔记(五)
因为 repl_backlog_buffer 是一个环形缓冲区,所以在缓冲区写满后,主库会继续写入,此时,就会覆盖掉之前写入的操作。如果从库的读取速度比较慢,就有可能导致从库还未读取的操作被主库新写的操作覆盖了,这会导致主从库间的数据不一致。一旦主从库完成了全量复制,它们之间就会一直维护一个网络连接,主库会通过这个连接将后续陆续收到的命令操作再同步给从库,这个过程也称为基于长连接的命令传播,可以避免频繁建立连接的开销。原创 2023-07-10 22:51:26 · 345 阅读 · 0 评论 -
《Redis 核心技术与实战》课程学习笔记(四)
Redis 持久化机制AOF日志:宕机了,Redis 如何避免数据丢失?一旦服务器宕机,内存中的数据将全部丢失。目前,Redis 的持久化主要有两大机制,即 AOF 日志和 RDB 快照。AOF 日志是如何实现的?我们比较熟悉的是数据库的写前日志(Write Ahead Log, WAL),也就是说,在实际写数据前,先把修改的数据记到日志文件中,以便故障时进行恢复。不过,AOF 日志是写后日志,“写后”的意思是 Redis 是先执行命令,把数据写入内存,然后才记录日志。传统数据库的日志,例原创 2023-07-06 11:15:10 · 380 阅读 · 0 评论 -
《Redis 核心技术与实战》课程学习笔记(三)
高性能 IO 模型:为什么单线程 Redis 能那么快?Redis 是单线程,主要是指 Redis 的网络 IO 和键值对读写是由一个线程来完成的,这也是 Redis 对外提供键值存储服务的主要流程。但 Redis 的其他功能,比如持久化、异步删除、集群数据同步等,其实是由额外的线程执行的。Redis 为什么用单线程?多线程的开销我们刚开始增加线程数时,系统吞吐率会增加,但是,再进一步增加线程时,系统吞吐率就增长迟缓了,有时甚至还会出现下降的情况。一个关键的瓶颈在于,系统中通常会存在被多线程原创 2023-07-05 00:43:59 · 278 阅读 · 0 评论 -
《Redis 核心技术与实战》课程学习笔记(二)
数据结构:快速的 Redis 有哪些慢操作数据库这么多,为啥 Redis 能有这么突出的表现呢?一方面,因为它是内存数据库,所有操作都在内存上完成,内存的访问速度本身就很快。另一方面,因为,键值对是按一定的数据结构来组织的,操作键值对最终就是对数据结构进行增删改查操作,所以高效的数据结构是 Redis 快速处理数据的基础。简单来说,底层数据结构一共有 6 种,分别是简单动态字符串、双向链表、压缩列表、哈希表、跳表和整数数组。键和值用什么结构组织?为了实现从键到值的快速访问,Redi原创 2023-07-04 22:49:59 · 386 阅读 · 0 评论 -
《Redis 核心技术与实战》课程学习笔记(一)
基本架构:一个键值数据库包含什么?这样学 Redis,才能技高一筹为了保证数据的可靠性,Redis 需要在磁盘上读写 AOF 和 RDB,但在高并发场景里,这就会直接带来两个新问题:一个是写 AOF 和 RDB 会造成 Redis 性能抖动;另一个是 Redis 集群数据同步和实例恢复时,读 RDB 比较慢,限制了同步和恢复速度。其实,一个可行的解决方案就是使用非易失内存 NVM,因为它既能保证高速的读写,又能快速持久化数据。很多技术人都有一个误区,那就是,只关注零散的技术点,没有建立起原创 2023-07-04 17:10:20 · 321 阅读 · 0 评论 -
《后端存储实战课》课程学习笔记(三)
商品介绍在商品详情页中占得比重是最大的,包含了大量的带格式文字、图片和视频。其中图片和视频自然要存放在对象存储里面;商品介绍的文本,一般都是随着商品详情页一起静态化,保存在 HTML 文件中。商品详情页静态化之后,不仅仅是可以节省服务器资源,还可以利用 CDN 加速,把商品详情页放到离用户最近的 CDN 服务器上,让商品详情页访问更快。至于商品价格、促销信息等这些需要频繁变动的信息,不能静态化到页面中,可以在前端页面使用 AJAX 请求商品系统动态获取。原创 2023-06-20 15:27:43 · 1116 阅读 · 0 评论 -
《后端存储实战课》课程学习笔记(二)
创建和更新订单时,如何保证数据准确无误?订单系统是整个电商系统中最重要的一个子系统,订单数据也就是电商企业最重要的数据资产。一个合格的订单系统,最基本的要求是什么?数据不能错。首先,你的代码必须是正确没 Bug 的,如果说是因为代码 Bug 导致的数据错误,那谁也救不了你。然后,你要会正确地使用数据库的事务。比如,你在创建订单的时候,同时要在订单表和订单商品表中插入数据,那这些插入数据的 INSERT 必须在一个数据库事务中执行。订单系统的核心功能和数据简单梳理一下一个订单系统必备的原创 2023-06-20 14:51:40 · 1210 阅读 · 0 评论 -
《后端存储实战课》课程学习笔记(一)
从今天起,换种方式学存储凡是那些特别难解决的、让你付出巨⼤代价的,或者是损失惨重的技术问题,几乎都可以归为存储系统的问题。存储是系统中最核心、最重要、最关键的组成部分,没有之一。你要关注存储的哪些特点?无论是什么样的存储,比如 MySQL、Redis、ElasticSearch 等等,它们都有几个共同的特点。第一个特点是难用。对于应用程序来说,存储无非就是帮我们安全可靠地保存数据,在我需要的时候能快速读出来也就可以了。很遗憾,几乎没有存储系统能满足这么简单的要求。第二个特点是慢原创 2023-06-19 22:51:09 · 2464 阅读 · 0 评论 -
《MySQL 必知必会》课程笔记(三)
《MySQL 必知必会》课程笔记(三):表原创 2023-05-10 17:13:09 · 597 阅读 · 0 评论 -
《MySQL 必知必会》课程笔记(二)
《MySQL 必知必会》课程笔记(二):字段原创 2023-05-10 16:35:00 · 652 阅读 · 0 评论 -
《MySQL 必知必会》课程笔记(一)
mysql 必知必会课程笔记(一):存储原创 2023-05-10 12:50:58 · 440 阅读 · 0 评论