- 博客(154)
- 资源 (13)
- 收藏
- 关注
原创 【转】PG 插件大全,留着学习用
转自:PostgreSQL插件_postgresql 插件-CSDN博客PostgreSQL插件_postgresql 插件-CSDN博客
2024-06-14 11:34:35
459
转载 35岁开始学算法笔记2 -- 时间复杂度
时间复杂度和空间复杂度究竟是什么呢?首先,让我们来想象一个场景。某一天,小灰和大黄同时加入了同一家公司。一天后,小灰和大黄交付了各自的代码,两人的代码实现的功能差不多。大黄的代码运行一次要花 100ms,占用内存 5MB。小灰的代码运行一次要花 100s,占用内存 500MB。于是……在上述场景中,小灰虽然也按照老板的要求实现了功能,但他的代码存在两个很严重的问题。1. 运行时间长运行别人的代码只要 100ms,而运行小灰的代码则要 100s,使用者肯定是无法忍受的。2.
2022-04-10 00:55:24
218
原创 35岁开始学算法笔记1--算法和数据结构
学习:【漫画算法-小灰的算法之旅】算法有高效的,也有拙劣的。在计算机领域,我们同样会遇到各种高效和拙劣的算法。衡量算法好坏的重要标准有两个。时间复杂度 空间复杂度场景:1. 运算例如求出两个数的最大公约数,要做到效率的极致,的确需要动一番脑筋。再如计算两个超大整数的和,按照正常方式来计算肯定会导致变量溢出。这又该如何求解呢?2. 查找当你使用谷歌、百度搜索某一个关键词,或在数据库中执行某一条 SQL 语句时,你有没有思考过数据和信息是如何被查出来的呢?3. 排序排
2022-04-10 00:42:35
280
转载 pg_bulkload 快速批量导入插件
PostgreSQL数据加载工具之pg_bulkloadlottu关注2018.07.16 17:51:03字数 1,056阅读 3271. pg_bulkload介绍PostgreSQL提供了一个copy命令的便利数据加载工具,copy命令源于PostgreSQL数据库,copy命令支持文件与表之间的数据加载和表对文件的数据卸载。pg_bulkload是一种用于Postgre...
2020-04-04 22:48:34
1109
翻译 【翻译】比较Pgpool-II和PgBouncer
凯文·马克沃特(Kevin Markwardt)2019年8月7日发表在:技术轨道标签:PostgreSQL在我为PostgreSQL确定不同的HA解决方案的过程中,Pgpool和PgBouncer多次出现。因此,我决定对它们进行评估,并确定它们可以处理的性能。我这样做是因为我在互联网上看到的大多数博客都是在资源有限的笔记本电脑上进行测试的。在此评估中,我使用我的Goo...
2020-03-16 00:37:25
3357
5
原创 Postgres社区版本策略
大版本策略:每年1个,每个版本只维护5年详见:https://www.postgresql.org/support/versioning/ 9.4~12的情况: Version Current minor Supported First Release Final Rel...
2020-01-10 14:50:27
276
原创 PG12之独立引擎
先引用一段 原文:http://blog.itpub.net/31556440/viewspace-2667228/独立存储引擎就实际来说,MySQL早些年的MyISAM,实现质量并不好,不支持事务,表级别的读写锁。但因为存储引擎独立接口,MySQL等到了InnoDB,InnoDB实现了全套事务存储引擎,且现在已完全取代了MyISAM的地位。而PG本身就实现了事务存储引擎,这个...
2019-12-23 01:59:03
968
原创 友商方案
迁移类:MIGRATING FROM ORACLE TO POSTGRESQLhttps://www.cybertec-postgresql.com/en/services/migrating-to-postgresql/migrating-from-oracle-to-postgresql/多主:POSTGRESQL MULTIMASTER REPLICATION...
2019-12-23 00:55:19
199
原创 “王者对战”之 MySQL 8 vs PostgreSQL 10 知识点解读(未完)
引用“王者对战”之 MySQL 8 vs PostgreSQL 10英文原文:Showdown: MySQL 8 vs PostgreSQL 10中英文对比:https://www.oschina.net/translate/showdown-mysql-8-vs-postgresql-10解读1、线程和进程那个更适合数据库?真正了解的人都会明白他们各自有优缺点。pg连接...
2019-12-22 23:08:45
273
转载 字典树Trie
字典树(Trie)是一种很特别的树状信息检索数据结构,如同其名,它的构成就像一本字典,可以让你快速的进行字符插入、字符串搜索等。Trie一词来自 retrieval,发音为 /tri:/ "tree",也有人读为 /traɪ/ "try"。字典树设计的核心思想是空间换时间,所以数据结构本身比较消耗空间。但它利用了字符串的共同前缀(Common Prefix)作为存储依据,以此来节省存储空...
2019-11-23 16:52:48
314
转载 C语言0长度数组(可变数组/柔性数组)详解
原文链接:https://blog.csdn.net/gatieme/article/details/641313221 零长度数组概念————————————————众所周知, GNU/GCC 在标准的 C/C++ 基础上做了有实用性的扩展, 零长度数组(Arrays of Length Zero) 就是其中一个知名的扩展.多数情况下, 其应用在变长数组中, 其定义如下stru...
2019-11-22 10:13:29
508
转载 CAS算法简介
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/q5706503/article/details/84558343CAS是什么?CAS是英文单词CompareAndSwap的缩写,中文意思是:比较并替换。CAS需要有3个操作数:内存地址V,旧的预期值A,即将要更新的目标值B。CA...
2019-11-17 20:31:21
330
转载 乐观锁与悲观锁
何谓悲观锁与乐观锁乐观锁对应于生活中乐观的人总是想着事情往好的方向发展,悲观锁对应于生活中悲观的人总是想着事情往坏的方向发展。这两种人各有优缺点,不能不以场景而定说一种人好于另外一种人。悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让...
2019-11-17 20:10:48
84
转载 PostgreSQL、Oracle/MySQL和SQL Server的MVCC实现原理方式对比
概述关系数据库管理系统使用MVCC(Multiversion Concurrency Control多版本并发控制)来避免写操作堵塞读操作的并发问题,MVCC也就是通过使用数据的多个版本保证并发读写不冲突的一种机制,不同的数据库有不同的实现。MVCC的两种不同实现方式第一种实现方式是将数据记录的多个版本保存在数据库中,当这些不同版本数据不再需要时,垃圾收集器回收这些...
2019-11-17 19:24:15
900
2
转载 PG的两种集群技术:Pgpool-II与Postgres-XL
最近研究了PG的两种集群方案,分别是Pgpool-II和Postgres-XL,在这里总结一下二者的机制、结构、优劣、测试结果等。1、 Pgpool-II和Postgres-XL简介据我目前的了解,Pgpool-II和Postgres-XL是PG集群开源实现中比较成功的两个项目,互联网上相关的介绍也不少,但尚不确定二者在企业生产环境中是否被广泛使用。其中Pgpool-II的前身的Pgpool...
2019-06-08 20:26:39
6347
1
转载 Postgresql之CheckPoint机制
checkpoint又名检查点,一般checkpoint会将某个时间点之前的脏数据全部刷新到磁盘,以实现数据的一致性与完整性。目前各个流行的关系型数据库都具备checkpoint功能,其主要目的是为了缩短崩溃恢复时间,以Oracle为例,在进行数据恢复时,会以最近的checkpoint为参考点执行事务前滚。而在WAL机制的浅析中,也提过PostgreSQL在崩溃恢复时会以最近的checkpoint...
2019-04-14 23:43:56
5577
转载 德哥的PostgreSQL私房菜 - 史上最牛皮的PG资料合集
德哥的PostgreSQL私房菜 - 史上最屌PG资料合集转自:https://yq.aliyun.com/articles/59251?spm=5176.100239.bloglist.95.5S5P9S看完并理解这些文章,相信你会和我一样爱上PostgreSQL,并成为一名PostgreSQL的布道者。资料不断更新中... ...沉稳的外表无法掩饰PG炙热的内心。扩展阅读...
2019-04-07 23:26:39
17802
原创 PostgreSQL Logical Decoding(二)pg_recvlogical工具测试
1、创建slot$ pg_recvlogical -U postgres -d postgres --slot test --create-slot2019-04-05 13:11:35.149 CST [20380] LOG: logical decoding found consistent point at 0/1635DB82019-04-05 13:11:35.149 CS...
2019-04-05 13:42:31
1188
原创 PostgreSQL Logical Decoding(一)
测试前需要先设置2个参数:wal_level=logical,需要重启max_replication_slots 默认10个,够用了,暂时不需要修改。1、创建一个复制槽,名称为logical_slot,使用插件:test_decodingpostgres=# SELECT pg_create_logical_replication_slot('logical_slot', 't...
2019-04-05 13:06:43
3319
1
原创 构建一个简单的数据库系列(十)叶子节点拆分(未完成)
英文原文链接:https://cstack.github.io/db_tutorial/parts/part10.html我们的B-Tree还不是一个真正的B-Tree,因为只有一个节点。为了解决这个问题,我们需要一些代码来实现拆分一个叶子节点。之后,我们需要创建一个内部节点作为两个叶节点的父节点。我们本节的目标是:单节点btree 对此:两级btree首先,让我们...
2019-03-31 23:34:31
310
原创 构建一个简单的数据库系列(九)二分查找和重复key
英文原文链接:https://cstack.github.io/db_tutorial/parts/part9.html上次我们注意到我们仍然按照未排序的顺序存储key。我们将解决该问题,并增加对重复key的检查。当前,我们的execute_insert函数总是选择在表尾插入。但是我们应该先检索到合适的位置,然后再插入。如果key已经存在,则返回error。ExecuteResul...
2019-03-31 23:29:00
168
原创 构建一个简单的数据库系列(八)B-tree叶子节点格式之二
英文原文链接:https://cstack.github.io/db_tutorial/parts/part8.html如何向叶子节点插入数据这一节我们只实现一个单节点树。回想下上节的内容,一颗树是从一颗空的叶子节点数开始演变的。图 空树键值对可以被一直添加直到叶子节点填满。图 1个节点的B-tree当第一次打开数据库时,数据库文件是一个空文件,我们初始化page=...
2019-03-31 20:52:33
276
原创 构建一个简单的数据库系列(八)B-tree叶子节点格式之一
英文原文链接:https://cstack.github.io/db_tutorial/parts/part8.html我们将持续修改表的格式,从未排序的数据改成B-tree。因为改动太大,需要花费几节文章来说明。在这节,我们定义叶子节点层,并支持key/value对插入到单节点树。可选的表格式当前的格式,每页只存储了rows(不包括元数据),因此从空间上讲是非常高效的。数据插入操作非...
2019-03-31 20:46:13
933
原创 构建一个简单的数据库系列(七)引入B-tree
英文链接:https://cstack.github.io/db_tutorial/parts/part7.htmlB-Tree是SQLite用来表示表和索引的数据结构,因此它是一个非常重要的想法。为什么树对数据库来讲是非常合适的数据结构呢?搜索特定值很快(时间复杂度:对数) 插入/删除您已经找到的值很快(重新平衡的时间是常量级的) 遍历一系列值很快(与哈希映射不同)...
2019-03-25 00:17:53
280
原创 构建一个简单的数据库系列(六)cursor抽象
英文连接:https://cstack.github.io/db_tutorial/parts/part6.html为了实现B-tree,这一节先对当前的实现进行一点重构。我们增加一个概念:Cursor(游标),代表了对象在数据库中的位置。那么关于cursor有几件事需要完成1、在表之前创建cursor2、在表之后创建cursor3、访问cursor所指向的行4、访问cur...
2019-03-25 00:15:37
550
原创 读《代码的未来》有感
章节5:支持大数据的数据存储技术使用键值存储的数据库,大多数都在数据查找技术上使用了散列这种数据结构。散列表中的数据量无论如何增大,其查找数据所需的时间几乎是固定不变的,因此也是一种非常合适大规模数据的技术。一、数据库的ACID特性即Atomicity(原子性)、Consistency(一致性)、Isolation(隔离性)和Durability(持久性)整体来看,acid非...
2019-03-24 21:39:33
145
原创 构建一个简单的数据库系列(五)持久化到硬盘
英文链接:https://cstack.github.io/db_tutorial/parts/part5.html“Nothing in the world can take the place of persistence.” –Calvin Coolidge像sqlite一样,我们通过保存整个数据库到一个文件到方式进行记录的持久化。我们已经实现了把记录反序列化到页大小到内存块中...
2019-03-24 00:46:41
499
原创 构建一个简单的数据库系列(四)测试用例
英文链接:https://cstack.github.io/db_tutorial/parts/part4.html这一节主要对第三节大代码进行详细的测试这里使用rspec工具进行测试用例编写。http://rspec.info/RSpec是Ruby测试框架,确实不懂,先手工测试下吧本次优化点使用strtok替代scanf,并增加了对输入的校验,详见函数:prepare_ins...
2019-03-18 22:56:48
1156
原创 构建一个简单的数据库系列(三)驻在内存append only的单表数据库
英文链接:https://cstack.github.io/db_tutorial/parts/part3.html假设表定义如下:column type id integer username varchar(32) email varchar(255) insert语句定义为insert column1, column2, colum...
2019-03-18 22:50:45
323
原创 构建一个简单的数据库系列(二)世界上最简单的sql解析器和虚拟机
英文原链接:https://cstack.github.io/db_tutorial/parts/part2.htmlThe “front-end” of sqlite is a SQL compiler that parses a string and outputs an internal representation called bytecode.This bytecode i...
2019-03-17 18:23:10
327
原创 构建一个简单的数据库系列(一)创建一个REPL
原文链接:https://cstack.github.io/db_tutorial/parts/part1.htmlsqlite3框架Code Generator以上归入到前端,以下归入到后端。第1节的目标,实现一个简单的交互式解释器(REPL)--读取(Read)运算(Eval) 输出(Print) 循环(Loop)~ sqlite3SQLite version 3.1...
2019-03-17 08:52:40
337
原创 pg源代码之DefineRelation
调用DefineRelation的地方1 create_ctas_internal - Reference to DefineRelation in createas.c (src\backend\commands) at line 115 --create table as2 DefineSequence - Reference to DefineRelation in sequence....
2019-01-13 23:41:03
603
原创 PG优质资料整理
整体: 德哥:从Oracle DBA到PostgreSQL布道者https://yq.aliyun.com/articles/60153 流式复制:PostgreSQL 10 新特性, 流式接收端在线压缩redo https://yq.aliyun.com/articles/69278?spm=a2c4e.11163080.searchblog.168.65842ec1aysM...
2018-12-31 23:52:12
751
转载 【转:讲得深入浅出】JAVA 内存泄露详解(原因、例子及解决)
转载请注明出处:http://blog.csdn.net/anxpp/article/details/51325838,谢谢! Java的一个重要特性就是通过垃圾收集器(GC)自动管理内存的回收,而不需要程序员自己来释放内存。理论上Java中所有不会再被利用的对象所占用的内存,都可以被GC回收,但是Java也存在内存泄露,但它的表现与C++不同。 JAVA 中的内存管理 要了解Jav...
2018-05-06 23:29:36
196
原创 基于关系数据库的纵表、横表及引擎设计(未完)
概念 其实数据库本没有这2个概念,这2个概念是从应用角度、逻辑角度出发诞生的。所谓常见的表都是横表,所以这里重点说下纵表,你就理解这2个概念了。 关系型数据库或者说传统的数据库,建立模型时都需要建立明确模型的属性,而这些属性是作为字段(field)存在的,但是在应用中我们经常面临一个问题就是对象的属性是不确定的,比如我们对客户的属性,我们随着研究关注地深入,需要关注的属性越来越
2016-11-01 11:54:04
2618
1
转载 纵表和横表的概念及其相互转换
横表就是普通的建表方式,如表结构为:主键、字段1、字段2、字段3...。 如果变成纵表后,则表结构为: 主键、字段代码、字段值。而字段代码则为字段1、字段2、字段3...。 具体为电信行业的例子。以用户帐单表为例,一般出账时用户有很多费用,其数据一般存储为:时间,客户ID,费用科目,费用。这种存储结构一般称为纵表,其特点是行数多,字段少。纵表在使用时由于行数多,统计用户数或对用户进行分档时还需要
2016-10-29 21:48:53
3328
转载 约定优于配置
文章来自维基百科约定优于配置(convention over configuration),也称作按约定编程,是一种软件设计范式,旨在减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性。本质是说,开发人员仅需规定应用中不符约定的部分。例如,如果模型中有个名为Sale的类,那么数据库中对应的表就会默认命名为sales。只有在偏离这一约定时,例如将该表命名为”products_so
2016-10-29 21:38:18
408
转载 三种东西永远不要放到数据库里
导读:作者Frank Wiles发表了一篇博文,Frank Wiles曾在很多演讲里说过,改进你的系统的最好的方法是先避免做“蠢事”。并不是说你或你开发的东西“蠢”,只是有些决定很容易被人们忽略掉其暗含的牵连,认识不到这样做对系统维护尤其是系统升级带来多大的麻烦。作为一个顾问,像这样的事情我到处都能见到,我还从来没有见过做出这样的决定的人有过好的结果的。图片,文件,二进制数据既
2016-10-29 21:34:28
379
valgrind 介绍
2012-11-27
Oracle语句优化53个规则详解
2010-10-28
OTL 编程指南
2009-08-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人