
数据库
文章平均质量分 85
数据源的港湾
这个作者很懒,什么都没留下…
展开
-
Oracle ADG的基本概念
备库与主库相比,可能暂时落后,但当它再次变为可用时,备用数据库将自动同步,而不会丢失数据。由于同步重做传输,这种模式可潜在地影响响应时间和吞吐量。可以通过配置一个低延迟网络,并为它分配足够应用高峰事务负载的带宽来将这种影响减到最小。最大可用模式适用于想要在生产站点上出现严重中断时确保获得零数据丢失保护,但不想让生产数据库受网络/备用服务器故障影响的企业。为防止备库发生网络故障,最好设置reopen参数,即使出现网络故障,也不会引发主库挂起,这时主库将从最大可用模式切换到最大性能模式。原创 2023-11-08 16:39:39 · 2966 阅读 · 1 评论 -
Oracle RAC是啥?
RAC是一个具有共享缓存体系结构的集群数据库,它克服了传统的不共享和共享磁盘方法的限制,为所有业务应用程序提供了一种可伸缩性和可用性的数据库解决方案,一般与Oracle Clusterware或第三方集群软件共同组成Oracle集群系统。裸设备(Raw devices) - 不经过文件系统,数据直接写入磁盘,好处是磁盘I/O性能很高,适合写操作频繁的业务系统。缺点是数据维护和备份不方便,备份只能通过dd命令或基于块级别的备份设备来完成,增加了维护成本。原创 2023-11-07 16:23:36 · 2439 阅读 · 0 评论 -
Nested loop(PostgreSQL 14 Internals翻译版)
这里,Nested Loop节点遍历外层集合(tickets)的行,并对每一行搜索内部集合(ticket_flights)的对应行,将机票号(t.t ticket_no)作为参数传递给条件。可以更准确地估计列表中出现的行的选择性,只有剩下的行必须依赖基于均匀分布的计算。如果对Memoize节点的调用显示传递的参数值与已经缓存的行对应,则这些行将被传递到父节点(Nested Loop),而不检查子节点。由于连接的表是通过外键连接的,因此选择性估计依赖于子表的每一行在父表中恰好有一个匹配行的事实。原创 2023-10-17 16:48:09 · 1244 阅读 · 0 评论 -
TimescaleDB多节点功能概述
如果您有更大的pb级工作负载,则可能需要多个TimescaleDB实例。TimescaleDB多节点允许您运行和管理数据库集群,这可以为您提供更快的数据摄取,以及对大型工作负载响应更快、更高效的查询。原创 2023-07-27 10:34:04 · 535 阅读 · 0 评论 -
TimescaleDB压缩功能
注:本文翻译自从1.5版本开始,TimescaleDB支持本地压缩数据的能力。此功能不需要使用任何特定的文件系统或外部软件,并且正如您将看到的,用户可以很容易地设置和配置它。在使用本指南之前,我们建议查看一下我们的体系结构部分,以了解有关压缩如何工作的更多信息。在高层次上,TimescaleDB的内置作业调度器框架将跨多个TimescaleDB超级表块异步地将最近的数据从未压缩的基于行的形式转换为压缩的列形式。本节将介绍这些概念,并帮助您了解本机压缩的一些优点和局限性。原创 2023-07-27 08:43:29 · 1060 阅读 · 0 评论 -
TimescaleDB时序数据库初识
时间序列数据是总体上表示系统、流程或行为如何随时间变化的数据。以时间为中心:数据记录总是有一个时间戳。仅追加:数据几乎完全是仅追加的(insert)。最近的:新数据通常是关于最近的时间间隔,我们很少更新或回填关于旧时间间隔的缺失数据。然而,数据的频率或规律性并不那么重要;它可以每毫秒或每小时收集一次。它也可以定期或不定期收集(例如,当某些事件发生时,而不是在预定义的时间)。与其他数据(如标准关系“业务”数据)相比,时间序列数据(以及支持它们的数据库)之间的一个关键区别是,原创 2023-07-26 13:58:39 · 896 阅读 · 0 评论 -
从Oracle迁移到PostgreSQL的10个原因
注:本文翻译自Oracle关系数据库管理系统(RDBMS)已被大型组织广泛使用,被认为是迄今为止市场上最先进的数据库技术。通常将RDBMS与作为产品应该提供的标准“事实”的其他数据库产品进行比较。它被db- enginees.com评为当今市场上可用的头号RDBMS。PostgreSQL被列为排名第四的RDBMS,但这并不意味着迁移到PostgreSQL没有任何优势。PostgreSQL自1989年以来一直存在,1996年开源。原创 2023-06-21 17:13:50 · 2198 阅读 · 0 评论 -
初识MYSQL组复制MGR
注:本文翻译自。原创 2023-06-06 16:27:57 · 565 阅读 · 0 评论 -
openGauss对比PostgreSQL
注:本文引用自。原创 2023-04-19 10:36:41 · 5507 阅读 · 1 评论 -
为什么Uber从PostgreSQL换成了MySQL
在Uber的早期,Postgres为我们提供了很好的服务,但随着我们的增长,我们在扩展Postgres方面遇到了重大问题。今天,我们有一些遗留的Postgres实例,但我们的大部分数据库要么构建在MySQL之上(通常使用我们的Schemaless层),要么在某些特殊情况下,构建在Cassandra这样的NoSQL数据库之上。总的来说,我们对MySQL非常满意,将来我们可能会有更多的博客文章来解释它在Uber的一些更高级的用法。原创 2023-04-15 11:13:37 · 963 阅读 · 0 评论 -
PostgreSQL之WAL段文件管理
在前面我们了解了PG数据库的故障恢复依赖于在启动时通过回放WAL段文件中的XLOG记录来完成,这篇我们学习一下PG数据库中WAL段文件是怎么管理的。首先,我们需要知道WAL段文件是保存在pxg_xlog(PG V10版本以前,在PG V10版本以后变成 pg_wal)子目录下,如果一个WAL段文件写满后就会切换到一个新的段文件。总的WAL段文件个数由几个配置参数决定的。此外,对于WAL段文件的管理机制在PG 9.5版本得到了提升。原创 2023-04-03 13:09:22 · 1772 阅读 · 0 评论 -
PostgreSQL之数据库恢复
前面我们了解到PostgreSQL的故障恢复与checkpoint、WAL密切有关。当数据库异常宕机,通过顺序的重放WAL段文件中从重做点(REDO point)开始的XLOG记录来进行数据库的恢复操作。原创 2023-04-03 10:18:00 · 2662 阅读 · 0 评论 -
PostgreSQL之Checkpoint检查点进程
在文章中我们学习了PG数据库中有好几个background后台进程,其中一个后台进程是checkpointer检查点进程。这里我们学习一下什么是checkpointer检查点进程以及它的用处。当然,由超级用户手工触发CHECKPOINT命令也可以调度checkpoint工作。下面再了解一下checkpoint过程都包含哪些内容。原创 2023-03-30 17:50:12 · 1254 阅读 · 0 评论 -
PostgreSQL之Commit Log
PostgreSQL数据库把事务的状态信息保存在Commit Log(简称clog)中,clog被分配在共享内存shared memory,记录事务的所有状态变化。下面我们先了解一下事务状态都有哪些。原创 2023-03-30 14:16:08 · 561 阅读 · 0 评论 -
PostgreSQL之整体架构
PostgreSQL作为一个单机的关系型数据库,与单机Oracle的架构是比较相似的,与MySQL的InnoDB引擎也比较像。据我目前的了解,单机数据库的整体架构都差不太多,都是包含一个主的进程,一些辅助进程,以及一个大的共享内存池。下面我们具体学习一下PG架构里面的这些部分。原创 2023-03-29 12:26:34 · 1057 阅读 · 0 评论 -
PostgreSQL之Full VACUUM
前面我们介绍了PG中的Concurrent VACUUM,详细请参考,这篇我们继续来了解一下PG中的Full VACUUM。我们了解Concurrent VACUUM允许在执行的时候仍然允许对正在VACUUM的表进行读取操作,因此这个操作对业务的影响也比较小。但是Full VACUUM在执行期间是不允许对相关表进行任何操作的,所以它对业务的影响也比较大,那么为什么还需要Full VACUUM呢?我们假如以下一种场景,一个表有三个Page,每个Page里面有6条Tuple,如下图所示。原创 2023-03-29 09:54:06 · 1011 阅读 · 0 评论 -
PostgreSQL之Concurrent VACUUM
在前面一文中我们初步了解到PG中是采用了MVCC多版本机制,数据在删除时并不会直接从页面中删除掉而是通过修改t_xmax将其标记为delete,更新数据也是通过把原数据标记为delete并插入一条新记录的形式。既然老的数据不会立马删除,那数据库一定就得一些其他的机制可以进行异步的清理,否则数据库长久肯定会有数据膨胀的问题存在。PG中为了清理老的无用数据,引入了VACUMM机制。。原创 2023-03-28 18:23:10 · 532 阅读 · 0 评论 -
PostgreSQL之tuple结构
在上一篇文章中我们了解了PostgreSQL中堆表的存储结构,以及对于堆表的tuple是如何写入和读取的,不过我们只涉及到如何把想要的tuple从表对应的页面读取出来或者把tuple如何写到页面去,但是关于tuple内部的细节并没有说明。本文我们将着重学习一下tuple的内部结构以及对于增删改操作tuple是如何变化的。原创 2023-03-28 16:37:00 · 1706 阅读 · 0 评论 -
PostgreSQL之堆表存储(Heap Table)
SQL Server关于堆表的描述如下,没有聚集索引的表堆表在sys.partitions里有1条index_id = 0 的记录数据存储没有任何的顺序,插入数据也没顺序由于数据没有任何顺序,查询数据会非常慢数据页之间没有相互链接从数据页读取数据,需要从IAM(Index Allocation Map)页里找页号。原创 2023-03-28 13:16:12 · 3291 阅读 · 1 评论 -
InnoDB关键特性
上一篇中我们简单了解了InnoDB的体系结构,了解它主要包含一个内存池以及一些后台进程。内存池主要包括缓冲池、日志缓冲池以及额外缓冲池三大块,其中缓冲池中又包含数据和索引页的缓存、插入缓冲、自适应哈希索引缓冲、锁信息缓存以及数据字典缓存等。后台进程中最主要的就是master thread进程,它基本包含了大部分的功能,其中包含几大循环,重点是主循环,主要分为每秒的操作和每10秒的操作。详细内容可回顾这篇文章。原创 2023-03-22 18:23:43 · 296 阅读 · 0 评论 -
InnoDB体系结构
MySQL区别于其他数据库最重要的特点是其插件式的表存储引擎。MySQL存储引擎支持很多种类,最为出名的就是InnoDB。InnoDB由Innobase Oy公司开发,创始人芬兰赫尔辛基的Heikki Tuuri,InnoDB存储引擎支持事务,主要面向OLTP应用。其特点有行锁设计、支持外键,支持类似Oracle的非锁定读,即默认情况下读操作不会产生锁。InnoDB将数据放在一个逻辑的表空间中,从MySQL 4.1版本开始,它可以将每个InnoDB的表单独存放到一个独立的ibd文件中。原创 2023-03-22 13:49:41 · 420 阅读 · 0 评论 -
单机数据库事务实现机制
注:本文章引自。原创 2023-02-16 13:06:43 · 484 阅读 · 0 评论 -
MySQL vs MariaDB
MySQL的一个分支,由开源社区维护,采用PGL授权许可。开发这个分支的原因是因为Oracle收购MySQL有MySQL闭源的风险,因此社区采用这个分支来避开这个风险。它完全兼容MySQL。MariaDB5.5及以前版本均依照MySQL的版本,从10.0.x版本开始不再依照MySQL的版本号。关系型数据库系统,目前被Oracle收购。最初由瑞典公司MYSQL AB于1994年创立。存储引擎上,MariaDB在10.0.9版本使用XtraDB代替MySQL的InnoDB。原创 2023-02-11 22:44:17 · 153 阅读 · 0 评论 -
Oracle/MySQL/PostgreSQL的MVCC实现及redo/undo/binlog相关概念
最近好像突然有点回归到传统的关系型/集中式数据库原理上面来了,也可能是之前一直对这些概念印象不太深刻。今天再总结一下,好让记忆深刻一些。本文主要的目的是把Oracle、MySQL、PostgreSQL三大主流的关系型数据库中关于MVCC实现及redo log、undo log及binlog的关系描述清楚。原创 2023-01-19 18:16:47 · 4333 阅读 · 0 评论 -
SGA与PGA的区别
前几天有被别人问到什么是SGA和PGA,说实在的,之前一直搞分布式,已经基本把单机里面的这两个概念忘记的差不多了,不过当时还是根据自己的一点数据库经验说了点七七八八,后来网上查了一下相关说明,发现自己的理解也大概能对的上,只不过没有那么详细。下图是一张Oracle的体系结构图,原创 2023-01-18 11:32:41 · 1674 阅读 · 0 评论 -
从DTCC2022盘点各大厂商如何看待数据库发展趋势
DTCC 2022 已落下帷幕有些时日,回顾大会上的一些分享,尤其是头一天上午几大数据库厂商均在演讲一开始纷纷表达了对数据库发展趋势的看法。下面我们来具体回顾一下达梦、腾讯、华为、阿里这几家对数据库未来的看法。原创 2022-12-28 14:32:23 · 1436 阅读 · 0 评论 -
PostgreSQL DBA快速入门-通过源码编译安装
本文介绍通过PostgreSQL官方源码安装包编译安装的方式来快速上手PostgreSQL数据库。目的是为了不需要指定可执行文件(如psql、pg_ctl等)的绝对路径在/data/postgres/13.2/data/pg_hba.conf中,添加下面行:host all all 0.0.0.0/0 md5以上表示对于所有使用IPV4的客户端机器,允许通过任意IP,通过任意用户可以发起对数据库的访问,但必须要提供数据库用户密码,认证方式为通过MD5加密认证。在/data/postgres/13.2/d原创 2022-06-21 17:59:24 · 522 阅读 · 0 评论 -
YugabyteDB对比CockroachDB-第一部分
注:本文翻译自YugabyteDB官网文章 https://blog.yugabyte.com/yugabytedb-vs-cockroachdb-bringing-truth-to-performance-benchmark-claims-part-1/介绍在Yugabyte,我们欢迎竞争和批评。我们相信这些方面对于广泛采用像YugabyteDB这样的业务关键、完全开源的项目是至关重要的。具体来说,建设性的批评有助于我们改进项目,使我们的大型用户社区受益。蟑螂实验室的工程师几个月前发布了他们对蟑螂数据原创 2022-05-24 11:55:42 · 1005 阅读 · 0 评论 -
YugabyteDB对比CockroachDB-第二部分
注:本文翻译自YugabyteDB官网文章 yugabytedb-vs-cockroachdb-bringing-truth-to-performance-benchmark-claims-part-2概要Yugabyte SQL是基于对PostgreSQL原生查询层的重用。这种重用保留了PostgreSQL中许多最先进的RDBMS特性,因此应用程序的开发速度不会受到影响。另一方面,CockroachDB还远没有成为今天PostgreSQL那样完整的RDBMS。尝试与PostgreSQL v9.6兼容是原创 2022-05-23 17:52:31 · 1149 阅读 · 0 评论 -
数据库架构设计的三种模式
数据库架构设计当前主要有三种模式,分别为Shared Nothing、Shared Everything、Shared Disk。Share Nothing各个处理单元都有自己私有的CPU/内存/硬盘等,不存在共享资源,类似于MPP(大规模并行处理)模式,各处理单元之间通过协议通信,并行处理和扩展能力更好。典型代表DB2 DPF和Hadoop ,各节点相互独立,各自处理自己的数据,处理后的结果可能向上层汇总或在节点间流转。我们常说的 Sharding 其实就是Share Nothing架构,它是把某个原创 2022-04-13 17:15:22 · 973 阅读 · 0 评论 -
Oracle 备份失败报错ORA-04063: view SYS.KU_RADM_FPTM_VIEW has errors
Oracle备份过程中报错如下,Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit ProductionWith the Partitioning, OLAP, Advanced Analytics and Real Application Testing optionsFLASHBACK automatically enabled to preserve database integrity原创 2020-06-23 13:51:56 · 1454 阅读 · 0 评论 -
EsgynDB SQL统计模式下各对象个数
EsgynDB数据库把对象的元数据信息保存在"_MD_"这个模式下,所有对象信息,包括表、索引、视图、序列、存储过程、触发器、函数等均能在元数据表中找到对应信息。"_MD_"这个模式下有一张关键表OBJECTS,每个对象有一个唯一的OBJECT_ID,通过此OBJECT_ID,关联不同的元数据表可以获取表不同的信息,如列信息、主键信息、索引信息等等。OBJECTS表中有一个字段OBJECT_TYPE表示对象类型, 我们可以通过此对象类型字段查询每个对象是哪种对象。这里就分享一条SQL语句来查询某个模式原创 2020-05-14 15:37:04 · 425 阅读 · 0 评论 -
c3p0的坑导致并发性能问题
最近几天在做数据库结合应用的并发压力测试,发现并发压测性能一直上不去,透过应用日志发现主要慢在获取数据库连接上面,应用使用c3p0连接池的方式。连接池的主要配置如下, <dbConnPools> <dbConnPool id="1" name="afa" type="0"> <property name="User" value="xxx"/> <property name="Pas原创 2020-05-12 20:53:41 · 2781 阅读 · 1 评论 -
易鲸捷钱库新特性之SQL级别HINT功能初见
易鲸捷数据库之金融数据库在即将到来的新版本1.6.0中将支持SQL级别的HINT功能。熟悉使用Oracle的各位看官可能都知道Oracle的HINT功能,大致语法如下,{DELETE|INSERT|SELECT|UPDATE} /*+ hint [text] [hint[text]]… */Oracle支持多种HINT,下面列举一些常用的HINT,1、/*+ ALL_ROWS */ 表明对语...原创 2020-05-06 19:30:37 · 567 阅读 · 0 评论 -
Postgresql行列转换
环境Postgresql 9.4.4列转行1 查询测试表数据cqdb=> select * from test ; name------ AA BB CC(3 rows)2 列转行(string_agg)cqdb=> select string_agg(name,',') from test; string_agg------------ AA,BB,原创 2016-09-07 22:34:57 · 25259 阅读 · 2 评论 -
Postgresql删除重复数据
环境Postgresql 9.4.4方法1:中间表1 查看已有数据cqdb=> select * from test order by id; id | name----+------- 1 | henry 2 | susan 3 | lily 3 | susan 4 | jerry 5 | stephen 5 | step原创 2016-09-07 15:39:03 · 2479 阅读 · 0 评论 -
Oracle ROWID理解
什么是ROWID?ROWID是Oracle数据库中行的全局唯一地址,通过ROWID可以快速定位某行的具体数据位置。可以使用SELECT语句查看行的ROWID,但不能使用INSERT/UPDATE/DELETE去修改或者删除ROWID.ROWID格式ROWID主要包括信息如下,数据对象编号(6位显示)数据文件编号(3位显示)数据块编号(6位显示)数据块中行编号(3位显原创 2016-09-11 15:00:39 · 1392 阅读 · 0 评论 -
ODS 介绍
ODS 概念ODS是一个面向主题的、集成的、可变的、反映当前细节的数据集合。它主要用于支持企业处理业务应用和存储面向主题的、即时性的集成数据,为企业决策者提供当前细节性的数据,通常作为数据仓库的过渡阶段。ODS 特点1 数据不断更新和易丢失,不存储历史数据,只反映当前实时性的信息2 存储细节性数据,很少有汇总数据3 支持快速的更新操作,数据刷新频率快4 ODS一般存原创 2016-09-02 10:45:32 · 10195 阅读 · 0 评论 -
Hash Join vs Nest Loop vs Sort Merge
Hash Join 将小表(内表)存于hash area内存中用作hash table,之后全扫描大表(外表)的每条记录并在连接的列上做哈希算法,查询是否能匹配hash table。如果内存放不下小表则需要把小表按照一定的哈希算法进行分割,同时大表也根据相应的算法进行分割,然后大表相应的块与小表相应的块生成的hash table进行join,最后把所有join的结果合并起来。Ne原创 2016-08-26 09:31:25 · 858 阅读 · 0 评论 -
数据库设计三范式
1NF 字段不可分;2NF 有主键,非主键字段依赖主键;3NF 非主键字段不能相互依赖;原创 2016-08-25 12:27:18 · 643 阅读 · 0 评论