数据库系统概论新技术篇 开源数据库系统-03+PostgreSQL的主题分析-上传

合集下载

postgresql教程

postgresql教程

postgresql教程PostgreSQL是一个开源的关系数据库管理系统(RDBMS),它的目标是成为最先进的开源数据库,并支持许多标准SQL 功能以及一些不同的高级功能。

本教程将向您介绍PostgreSQL的基本概念和用法。

我们将从安装和设置开始,然后逐步深入了解表、视图、索引、事务和查询等主题。

第一部分:安装和设置在本部分中,我们将向您介绍如何下载、安装和设置PostgreSQL数据库。

我们还将介绍一些基本概念和术语,如数据库、表和列。

1. 安装PostgreSQL:在本节中,我们将向您展示如何从官方网站或其他来源下载并安装PostgreSQL。

2. 设置数据库连接:在本节中,我们将介绍如何设置和配置数据库连接,包括创建用户、设置密码和分配权限等内容。

3. 创建数据库和表:在本节中,我们将介绍如何创建数据库和表,并向您展示一些常用的数据类型和约束。

第二部分:表和视图在本部分中,我们将更详细地介绍表格和视图的概念,并向您展示如何使用它们来存储和查询数据。

1. 创建和修改表格:在本节中,我们将介绍如何创建新的表格,并向您展示如何修改和删除现有的表格。

2. 数据类型和约束:在本节中,我们将深入了解不同的数据类型和约束,并向您展示如何使用它们来保证数据的完整性和一致性。

3. 视图和触发器:在本节中,我们将向您展示如何创建和使用视图和触发器,以及如何利用它们来简化复杂的查询和操作。

第三部分:索引和查询优化在本部分中,我们将介绍索引和查询优化的概念,并向您展示如何使用索引来提高查询性能。

1. 索引的概念和类型:在本节中,我们将介绍不同类型的索引,如B-tree、哈希和GiST索引,并向您展示如何创建和使用它们。

2. 查询优化和性能调优:在本节中,我们将介绍一些常见的查询优化技术,如查询计划、索引优化和统计信息收集等。

3. 复杂查询和连接:在本节中,我们将向您展示如何编写复杂的查询,包括多表连接、子查询和聚合等。

PostgreSQL详解

PostgreSQL详解

PostgreSQL数据库一:PostgreSQL介绍1、PostgreSQL就是以加州大学伯克利分校计算机系开发得 POSTGRES,现在已经更名为POSTGRES,版本 4、2为基础得对象关系型数据库管理系统(ORDBMS)。

PostgreSQL支持大部分 SQL标准并且提供了许多其她现代特性:复杂查询、外键、触发器、视图、事务完整性、MVCC。

同样,PostgreSQL 可以用许多方法扩展,比如, 通过增加新得数据类型、函数、操作符、聚集函数、索引方法、过程语言。

并且,因为许可证得灵活,任何人都可以以任何目得免费使用、修改、与分发PostgreSQL,不管就是私用、商用、还就是学术研究使用。

2、PostgreSQL图标3.PostgreSQL优点有目前世界上最丰富得数据类型得支持支持,其中有些数据类型可以说连商业数据库都不具备,具体类型下文会说明、PostgreSQL拥有一支非常活跃得开发队伍,而且在许多黑客得努力下,PostgreSQL 得质量日益提高PostgreSQL 对接口得支持也就是非常丰富得,几乎支持所有类型得数据库客户端接口。

这一点也可以说就是 PostgreSQL 一大优点。

4.PostgreSQL缺点首先,早期得 PostgreSQL 继承了几乎所有 Ingres, Postgres, Postgres95 得问题:过于学院味,因为首先它得目得就是数据库研究,因此不论在稳定性, 性能还就是使用方方面面,长期以来一直没有得到重视,直到 PostgreSQL 项目开始以后,情况才越来越好,PostgreSQL 已经完全可以胜任任何中上规模范围内得应用范围得业务其次,PostgreSQL 得确还欠缺一些比较高端得数据库管理系统需要得特性,比如数据库集群,更优良得管理工具与更加自动化得系统优化功能等提高数据库性能得机制等。

5.目前官方最新版本:9、3、2二、windows下安装过程1、开始安装:2、选择程序安装目录:注:安装 PostgreSQL 得分区最好就是 NTFS 格式得。

PostgreSQL数据库介绍

PostgreSQL数据库介绍

PostgreSQL数据库介绍PostgreSQL是一种功能强大的关系型数据库管理系统(RDBMS),它采用了开源的方式进行开发和维护。

由于它的稳定性、安全性和可扩展性,PostgreSQL已成为最受欢迎的开源数据库之一、本文将从数据库概述、特点、架构、应用领域和优势等方面对PostgreSQL进行详细介绍。

一、概述PostgreSQL是一个高度模块化的数据库系统,它支持SQL语言,具有ACID(原子性、一致性、隔离性和持久性)事务,并具有复杂的查询、并发控制和储存优化功能。

它的目标是成为一个功能完善、兼容性良好且具有高可靠性的数据库管理系统。

二、特点1. 多版本并发控制:PostgreSQL支持多个事务并发进行操作,具有高并发性能。

它采用多版本并发控制(MVCC)技术来处理并发访问问题,确保事务的正确性和一致性。

2. 对象关系性:PostgreSQL支持复杂的数据类型,如数组、JSON、XML等。

它还提供了表继承、视图、触发器和存储过程等高级特性,能够灵活地处理复杂的数据模型。

3. 扩展性:PostgreSQL具有可扩展的体系结构,可以实现水平和垂直扩展。

它支持分区表、并行查询和复制等特性,能够应对大规模数据和高负载的情况。

4. 安全性:PostgreSQL具有强大的安全性功能,支持通过用户名和密码、客户端证书、多种加密算法等方式进行身份验证和数据加密。

它还提供了访问控制列表(ACL)、行级安全性和安全沙箱等特性,确保数据的安全性和隐私性。

5. 可扩展的生态系统:PostgreSQL拥有庞大的开发社区,提供了丰富的第三方插件和扩展,可以满足各种特定需求。

它还与许多编程语言和开发工具进行了集成,提供了便捷的开发和管理接口。

三、架构PostgreSQL的架构主要分为后台进程和前台连接两部分。

后台进程包括主进程(会监听数据库连接)和多个工作进程(每个进程处理一个数据库连接),用于处理数据库的各种操作。

数据库一体机

数据库一体机

数据库系统概论新技术篇数据库一体机传统数据库系统独立的通用系统软件⏹面向所有应用⏹面向任意的硬件配置和操作系统局限性⏹不易使用需针对硬件资源进行配置和调优⏹性能局限通用硬件在数据库上的固有瓶颈– I/O、网络通讯POSTGRESQL的常用配置参数•shared_buffers•work_mem•maintenance_work_mem•effective_cache_size•checkpoint_segments•checkpoint_completion_target•pg_xlog•wal_buffer•wal_level•commit_delay•……数据库一体机的初衷数据库厂商和硬件厂商的合作⏹数据库和硬件服务器的捆绑。

⏹对硬件进行特殊设计,移除数据库遇到的固有瓶颈。

案例:⏹Oracle收购SUN后推出一体机ExaData。

⏹DB2与IBM大型机的深度融合。

⏹SAP HANA与HP的合作。

数据库和硬件服务器的捆绑预先进行配置和调优,节省用户维护开销 提供不同配置,以满足不同的用户需求数据库一体机 VS 云数据库(RDS)相同点:节省维护开销、可扩展、服务模式 不同点:本地 vs 云端软硬结合解决数据库的性能瓶颈数据通道的瓶颈⏹I/O⏹内存带宽⏹网络通讯计算瓶颈⏹查询优化、查询处理⏹复杂统计优化数据通道–优化I/O使用更大的内存⏹内存数据库:Oracle TimesTen、SAP HANA使用新型的存储器⏹闪存(SSD)、非易失内存(PCRAM、STT-MRAN)CPUCPU DRAM HDD优化数据通道 – 优化内存带宽 利用好CPU 和内存之间的多级缓存 定制带宽更大的CPUCP UCP U CP U CP U DRAM / NVMCPU CP U CP U CP U优化数据通道–优化网络通讯使用InfiniBand使用RDMA定制Protocol优化计算–存储端计算将计算转移到存储端⏹在存储器上加入计算单元(e.g. FPGA),将多余的数据尽可能过滤掉,减少通讯量。

PostgreSQL数据库的特点与优势

PostgreSQL数据库的特点与优势

PostgreSQL数据库的特点与优势PostgreSQL数据库是一种自由、开放源代码的关系型数据库,被广泛地应用于各种应用程序中。

它的特点和优势如下所述。

一、特点1. 高度可靠性PostgreSQL数据库具有出色的稳定性和可靠性,大小型企业和大型组织也可依靠它来处理重要数据。

在出现故障时,PostgreSQL也能够快速地恢复操作正常,数据的完整性能得到极大的保障。

2. 扩展性强PostgreSQL数据库具有扩展性极强的特点,可以非常轻松地实现垂直和水平的扩展。

同时还提供了多种扩展模型,如postgis、hstore等,可以使数据库更加灵活适用于各种数据存储需求。

3. 具有多种编程语言支持PostgreSQL数据库支持各种主流编程语言的API,如C、C++、Java、Python、Perl、Ruby等,使得开发人员可以选择最适合的编程语言开发应用程序,数据处理过程更加灵活和高效。

4. 具有高级特性PostgreSQL实现了许多高级特性,如外键、事务、视图、存储过程和触发器等,将SQL的使用转化为更高效的数据处理方式。

此外,PostgreSQL还支持JSON数据类型,并且提供了全文搜索、元数据查询等功能,便于用户更好地管理数据并增强数据的查询功能。

5. 开放源代码PostgreSQL数据库是以开源方式进行开发的,用户可以免费获取、使用、修改源代码,从而更好地满足其各种需求。

此外,开放源代码使得用户可以充分利用社区的力量,共同开发和维护高质量的数据库产品。

二、优势1. 易于安装和使用PostgreSQL数据库具有良好的安装和使用体验,安装过程简单清晰,同时提供了各种开箱即用的工具和接口,方便用户进行数据管理和操作。

2. 性能强悍PostgreSQL数据库对于读取操作和并发性能方面有着出色的表现。

尤其适合高并发、大数据量的应用场景,可以更好地支持并发读写操作,并提供了丰富的调优参数,可以使得性能得到更好的提升。

postrage原理

postrage原理

postrage原理
PostgreSQL(通常称为Postgres)是一个开源的关系数据库管理系统。

其核心原理包括以下几点:
1. 存储和检索数据:PostgreSQL使用一种称为范式的结构化方法来存储数据,使得数据可以以一种高效且可预测的方式进行检索。

2. SQL语言:PostgreSQL使用SQL(结构化查询语言)来与数据库进行交互。

用户可以使用SQL来执行各种操作,如创建表、插入数据、更新数据、删除数据等。

3. 事务处理:PostgreSQL支持ACID事务,这意味着它可以保证在复杂数据库操作中的数据完整性。

4. 复制和高可用性:通过流复制和其他技术,PostgreSQL可以实现数据库的复制和高可用性,从而确保数据的可靠性和服务的连续性。

5. 扩展性:PostgreSQL具有很高的扩展性,可以通过编写自定义函数、触发器、存储过程等来扩展其功能。

6. 安全性:PostgreSQL提供了多种安全特性,如用户认证、访问控制列表(ACL)等,以确保数据的机密性和完整性。

7. 性能优化:通过使用各种性能优化技术,如索引、查询优化器等,PostgreSQL可以高效地处理大量数据和复杂查询。

这些原理共同构成了PostgreSQL作为一个强大和可靠的数据库系统的核心基础。

如需了解更多信息,建议咨询计算机领域业内人士或查阅PostgreSQL相关书籍。

常用数据库类型3篇

常用数据库类型3篇

常用数据库类型第一篇:关系型数据库介绍关系型数据库是指采用了关系模型的数据库管理系统,它以数据表为基本对象,数据表是由行和列组成的。

表结构中,每一列代表一种属性,每一行代表一个记录。

在关系型数据库中,每一个表都有一个唯一的名称,每个列都有一个唯一的名称,每个表都有一个主键,它能唯一标识表中的每一行数据。

常用的关系型数据库有MySQL、Oracle、SQL Server、PostgreSQL等。

- MySQL数据库介绍MySQL是一款开源的关系型数据库管理系统,广泛应用于Web应用程序中。

它支持多种操作系统的使用,是最受欢迎的关系型数据库之一。

MySQL支持SQL语言结构,同时还提供了非常好的性能、可靠性和可用性。

- Oracle数据库介绍Oracle是一款商业化的关系型数据库管理系统,广泛应用于大型企业级应用领域。

它支持各种操作系统,包括Windows、Linux、Unix等,同时还提供了相应的数据库管理和开发工具。

Oracle的性能、可靠性、可用性是业界公认的最好的。

- SQL Server数据库介绍SQL Server是微软公司开发的一款关系型数据库管理系统,适合于Windows平台。

它支持T-SQL语言,提供了强大的存储处理能力,包括数据存储、处理和管理等各个方面。

SQLServer广泛应用于各种Web应用和企业级应用领域。

- PostgreSQL数据库介绍PostgreSQL是一款开源的关系型数据库管理系统,提供了许多高级特性,包括用户自定义类型、复杂类型、触发器、事务支持等等。

它支持多种操作系统平台,包括Windows、Linux、Unix等。

PostgreSQL广泛应用于各种商业和学术领域,它的性能和可靠性都是业界公认的最好的。

综上所述,关系型数据库是一种非常常见的数据库类型,在企业级应用中广泛应用,它具有稳定性、易用性和可靠性等多种优点,是企业级应用的首选。

第二篇:非关系型数据库介绍非关系型数据库也称为NoSQL(Not Only SQL),它不采用传统的关系型的表格模型,而是采用键值对存储、文档型存储、图形数据库、列存储等模型。

PostgreSQL数据库设计原则和最佳实践

PostgreSQL数据库设计原则和最佳实践

PostgreSQL数据库设计原则和最佳实践数据库设计是构建一个高效、可扩展和易维护的系统的关键步骤。

PostgreSQL是一种强大的开源关系型数据库管理系统,具有广泛的功能和扩展性。

本文将介绍一些PostgreSQL数据库设计的原则和最佳实践,以帮助您更好地设计和优化数据库。

1. 使用正确的数据类型正确选择合适的数据类型是数据库设计中至关重要的一步。

不同的数据类型在存储和处理数据时有不同的性能和空间开销。

在PostgreSQL中,有许多数据类型可供选择,如整数、浮点数、文本、日期/时间等。

根据数据的特性和需求,选择最合适的数据类型,以减少存储空间的浪费和提高查询性能。

2. 设计合理的表结构在设计数据库表结构时,应遵循一些最佳实践。

首先,确定正确的主键。

主键应该是唯一且稳定的字段,它能够唯一标识一条记录。

其次,避免使用过多的冗余字段,以减少数据冗余和维护成本。

此外,合理设计表之间的关系,并使用外键来实现数据完整性和一致性。

3. 索引优化索引是提高查询性能的关键之一。

在PostgreSQL中,可以使用B-tree、哈希、GiST等索引类型。

在设计索引时,应根据查询的需求和频率进行优化。

不必为每个字段都创建索引,只需要为经常进行搜索和排序的字段创建索引,可以提高查询效率并减少索引的维护成本。

4. 视图和存储过程的使用视图和存储过程是将逻辑封装在数据库中的强大工具。

视图可以简化复杂的查询,并提供数据安全性。

存储过程可以将一系列的SQL语句封装成一个可重复使用的程序单元,提高数据库的性能和可维护性。

5. 使用事务管理事务管理是确保数据的一致性和完整性的关键机制。

在数据库设计中,应合理使用事务,以保证数据的正确性。

只有当一系列的操作都成功完成时,才将数据持久化到数据库中。

6. 避免过度规范化规范化是数据库设计中常用的一种技术,可以减少数据冗余和提高数据的一致性。

然而,过度规范化会导致查询性能下降,增加查询的复杂度。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第8讲开源数据库系统8.1 概述8.2 PostgreSQL的学习、使用与定制8.3 PostgreSQL的主题分析8.3 PostgreSQL的主题分析 进程结构⏹辅助进程、信号处理器存储管理器⏹OO设计、空间组织缓冲区管理器⏹淘汰算法、多核优化技术查询处理⏹执行设计思想事务处理⏹多版本并发控制(MVCC)基本结构---进程⏹1:1监听进程 postmaster (postgres) bgwriterwalwrite autovacuum launcher statisticscollectorpostgrespostgres postgres psql app 1 app k 进程结构辅助进程核心监听进程⏹postmaster: 启动服务器集群,监听客户请求,分派后台处理进程 主要辅助进程⏹Syslogger: System logger(系统输出登记进程)•记录服务器运行中各类输出信息⏹BgWriter: Backend writer (后台写进程)•回写“脏”数据缓冲区⏹WalWriter: WAL writer background (WAL日志写进程)•回写WAL日志缓冲区⏹AutoVaccum: autovacuum daemon (自动清理进程)•周期性对数据库进行过时数据的清理⏹PgStat: PostgreSQL statistics collector (统计信息收集进程)•收集各种统计信息,运行状态或数据的REAPER函数子进程死亡的信号处理函数,完成清理工作。

⏹SIGCHLD:子进程=> postmaster// pqsignal(SIGCHLD, reaper); /* handle child termination */处理能力⏹根据子进程类型/信息,完成相应的清理。

⏹例子•Walwriter/AutoVacuum:调用HandleChildCrash()处理崩溃;•SysLogger:调用SysLogger_Start()重启SysLogger。

•辅助进程pid=0,启动辅助进程。

存储管理器存储管理器--smgr大对象--large_object物理页面管理--page空闲空间管理—freespace存储管理器--smgr通用存储管理器(@smgr.c)—OO设计typedef struct f_smgr {void (*smgr_init) (void); /* may be NULL */void (*smgr_shutdown) (void); /* may be NULL */void (*smgr_close) (SMgrRelation reln, ForkNumber forknum);void (*smgr_create) (SMgrRelation reln, ForkNumber forknum, bool isRedo);bool (*smgr_exists) (SMgrRelation reln, ForkNumber forknum);void (*smgr_unlink) (RelFileNodeBackend rnode, ForkNumber forknum, bool isRedo);void (*smgr_extend) (SMgrRelation reln, ForkNumber forknum,BlockNumber blocknum, char *buffer, bool skipFsync);void (*smgr_prefetch) (SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum);void (*smgr_read) (SMgrRelation reln, ForkNumber forknum,BlockNumber blocknum, char *buffer);void (*smgr_write) (SMgrRelation reln, ForkNumber forknum,BlockNumber blocknum, char *buffer, bool skipFsync);BlockNumber (*smgr_nblocks) (SMgrRelation reln, ForkNumber forknum);void (*smgr_truncate) (SMgrRelation reln, ForkNumber forknum, BlockNumber nblocks);void (*smgr_immedsync) (SMgrRelation reln, ForkNumber forknum);void (*smgr_pre_ckpt) (void); /* may be NULL */void (*smgr_sync) (void); /* may be NULL */void (*smgr_post_ckpt) (void); /* may be NULL */} f_smgr smgrsw[ ] = { /* magnetic disk*/{ mdinit, NULL, mdclose, mdcreate, mdexists, mdunlink, mdextend, mdprefetch, mdread, mdwrite, mdnblocks, mdtruncate, mdimmedsync, mdpreckpt, mdsync, mdpostckpt } };大对象--large_object(xLOB) 系统表pg_largeobjecteg. 大的文本文件,比如某个3MB的网页Name Type Descriptionloid oid Identifier of the large object that includes this pagepageno int4 Page number of this page within its large object (counting from zero)data bytea Actual data stored in the large object. This will never be more thanLOBLKSIZE (BLCKSZ / 4) bytes and might be lessloid pageno data2 0 we....2 1 are...数据页面= Header + {data_item}•记录的地址=>页面物理地址 +页内偏移序号•可以很容易扩展为类似段页式的存储组织数据项索引方式--bufpage.h Item DescriptionPageHeaderData 24 bytes long. Contains general information about the page, including free space pointers.ItemIdData Array of (offset,length) pairs pointing to the actual items. 4 bytes per item.Free space The unallocated space. New item pointers are allocated from the start of this area, new items from the end.Items The actual items themselves.Special space Index access method specific data. Different methods store different data. Empty in ordinary tables.数据项索引方式Itemtypedef struct ItemIdData /* C的技巧 */{unsigned lp_off:15, /* offset to tuple (from start of page) */lp_flags:2,/* state of item pointer, see below */lp_len:15; /* byte length of tuple */ } ItemIdData;typedef ItemIdData *ItemId;#define ItemIdIsValid(itemId) PointerIsValid(itemId)#define ItemIdIsUsed(itemId) \((itemId)->lp_flags != LP_UNUSED)...磁盘页面布局 --- bufpage.h typedef struct PageHeaderData {/* XXX LSN is member of *any* block, not only page-organized ones */XLogRecPtr pd_lsn; /* LSN: next byte after last byte of xlog* record for last change to this page */ uint16 pd_checksum; /* checksum */uint16 pd_flags; /* flag bits, see below */LocationIndex pd_lower; /* offset to start of free space */LocationIndex pd_upper; /* offset to end of free space */LocationIndex pd_special; /* offset to start of special space */uint16 pd_pagesize_version;TransactionId pd_prune_xid; /* oldest prunable XID, or zero if none */ItemIdData pd_linp[1]; /* beginning of line pointer array */} PageHeaderData;// storage/page/bufpage.c [PageAddItem()]void PageInit(Page page, Size pageSize, Size specialSize){...p->pd_lower = SizeOfPageHeaderData;p->pd_upper = pageSize - specialSize;p->pd_special = pageSize - specialSize;PageSetPageSizeAndVersion(page, pageSize, PG_PAGE_LAYOUT_VERSION);Tuple结构-- HeapTupleHeaderData⏹src/include/access/htup_details.hField Type Length Descriptiont_xmin TransactionId 4 bytes insert XID stampt_xmax TransactionId 4 bytes delete XID stampt_cid CommandId 4 bytes insert and/or delete CID stamp (overlays with t_xvac)t_xvac TransactionId 4 bytes XID for VACUUM operation moving a row versiont_ctid ItemPointerData 6 bytes current TID of this or newer row versiont_infomask2int16 2 bytes number of attributes, plus various flag bitst_infomask uint16 2 bytes various flag bitst_hoff uint8 1 byte offset to user data空闲空间管理--freespace FreeSpaceMap-freespace/freespace.c⏹空闲空间映射⏹快速找到某个关系中的可用空间(eg. 插入元组) 持久外存文件---FSM页面(二叉树)缓冲区管理器 主要实现技术⏹存取控制基本机制⏹缓冲区描述符--BufferDesc⏹淘汰策略管理器--freelist.c多核优化技术⏹缓存线(cache line)对齐⏹缓冲区映射哈希表分区⏹使用memory barrier(atomic)存取控制基本机制@storage/buffer/README引用计数+ 缓冲区封锁⏹使用状态 vs. 争用/竞争现象IPC中的信号量技术--Prodr&Consrcnt 可用资源量lock 改变状态/信息引用计数(reference count)⏹ReadBuffer vs. ReleaseBuffer缓冲区封锁(buffer content lock)⏹shared vs. exclusive⏹短锁共享缓冲区描述符或状态typedef struct BufferDesc /* 9.6.2 */{BufferTag tag; /* ID of page contained in buffer */int buf_id; /* buffer's index number (from 0) */pg_atomic_uint32 state; /* state of the tag, containing flags(10), usagecount(4) and refcount (18)*/int wait_backend_pid; /* backend PID of pin-count waiter */int freeNext; /* link in freelist chain */LWLockId *content_lock; /* to lock access to buffer contents */ [SyncOneBuffer()=> locking] } BufferDesc;typedef struct buftag{RelFileNode rnode; /* physical relation identifier */ForkNumber forkNum; /* main/fsm/vm/init */BlockNumber blockNum; /* blknum relative to begin of reln */} BufferTag;// BufFlags#define BM_DIRTY (1 << 0) /* data needs writing */共享缓冲区状态标记pg_atomic_uint32 state; /* state of the tag, containing flags, refcount and usagecount */淘汰策略管理器保护锁:BufFreelistLock时钟算法"clock sweep "StrategyGetBuffer(BufferAccessStrategy strategy, uint32 *buf_state)[可扩展] 基本淘汰策略--确定victim页面@StrategyGetBuffer()/ @buffer/README1.获得buffer_strategy_lock锁。

相关文档
最新文档