PostgreSQL常用命令
PostgreSQL常用命令 generate_series(a, b) [a, b]间所有整数的序列 random() [0, 1)间的随机数 a + random() * (b - a) [a, b)间的随机数 floor(a + random() * (b - a)) [a, b)间的随机整数 chr(int4(random() * 26) + 65) 随机大写字母 chr...
PostgreSQL常用命令 generate_series(a, b) [a, b]间所有整数的序列 random() [0, 1)间的随机数 a + random() * (b - a) [a, b)间的随机数 floor(a + random() * (b - a)) [a, b)间的随机整数 chr(int4(random() * 26) + 65) 随机大写字母 chr...
PostgreSQL可见性映射表(VM)和VACUUM操作 PostgreSQL为了实现多版本并发控制(MVCC),当事务删除或者更新元组时,并非从物理上删除,而是将其标记无效,最终再通过VACUUM命令清理这些无效元组,真正的物理删除发生在清理过程。清理无效元组时,需要先找到无效元组,再进行清理。如果没有其他技术,需要遍历查找每一个页,找到页中的无效元组。如果更新和删除不是很频繁,表文件...
PostgreSQL插入大量数据:pg_testgen插件 在进行数据库开发、测试时,新建表之后,时常想自己插入数据,但十分麻烦。 pg_testgen插件可以产生大量随机数据,方便进行数据库开发测试。 插件地址:pg_testgen 安装方法 cd contrib/pg_testgen //进入插件目录 make make install 然后进入数据库、启用插件即可: C...
PostgreSQL插件开发 PostgreSQL中许多控制信息都是以系统表的形式来管理,这个特点决定了PostgreSQL比其他数据库更容易进行内核扩展。PostgreSQL还提供了丰富的数据库内核编程接口,允许开发者以插件的形式将自己的代码融入内核。 PostgreSQL插件开发非常简单,下面举一个例子,开发一个随机测试数据生成器。 插件名为pg_testgen,首先需要创建四个文...
PostgreSQL表和元组的组织方式 上面讲过PostgreSQL的页大小为8K,这意味着堆文件大小最小为8K,且一定为8K的整数倍。对于PostgreSQL,单个堆文件的最大大小限制为1G,超过1G的表会被分成多个堆文件存储。 每一个8K的页面的结构如下图: 这里每一个tuple存储一条数据记录,从数据页底部开始向前依次存储,这些堆元组的地址由一个4B大小的行指针所指向。这些行...
页大小——数据库文件IO的基本单位 除redis等内存数据库外,几乎所有的数据库都是将数据以文件的形式存储在磁盘、SSD硬盘等存储介质里的。目前绝大部分数据库系统的存储介质都是磁盘,磁盘的读写都是以扇区为单位,每一个扇区的大小是512字节,硬件的特点决定了操作系统、数据库系统等程序的最小文件IO单位是512字节。为了文件读写的效率,数据库系统不直接使用512B的最小粒度,而是采用更大的页来...
行存与列存——数据表的存储方式 以下是一个简单的数据表: id name age salary 20220001 Jack 18 4500 20220002 Bob 20 60...
openGauss列存压缩源码分析 在openGauss 3.0.0数据库中,相对于行存以页为单元进行压缩,列存以CU为单元具有天然的压缩优势。 在openGauss中有三种压缩级别:LOW, MIDDLE, HIGH。指定的压缩等级越高,则数据的压缩率越高。除此之外还可以选择不开启压缩。 typedef enum OptCompress { COMPRESS_NO = 0, ...
openGauss列存数据压缩实验 对于时序场景,float和timestamp类型占比较大,需要重点关注,较高的压缩率可以降低磁盘空间的使用。 openGauss中,对于float使用Delta2算法,对于float使用XOR算法,推测参考了facebook关于时序数据库的论文,算法选择几乎相同: Gorilla: A Fast, Scalable, In-Memory Time S...
SQL执行流程 do_command Read one command from connection and execute it (query or simple command). This function is called in loop from thread function. > my_net_read > dispatch_command: Perform...