[转] 关于入侵PostgreSQL的那些事儿(文件读取写入、命令执行的办法)
背景 原文 https://www.2cto.com/article/201307/226572.html 今天无意发现了个PostgreSQL环境,线上学习了下,一般的数据注射(读写数据库)差异不大,不做讨论,个人比较关心PostgreSQL的文件读取和命令执行方面。 1,文件读取/写入 PostgreS...
背景 原文 https://www.2cto.com/article/201307/226572.html 今天无意发现了个PostgreSQL环境,线上学习了下,一般的数据注射(读写数据库)差异不大,不做讨论,个人比较关心PostgreSQL的文件读取和命令执行方面。 1,文件读取/写入 PostgreS...
背景 数据交、并、差是分析型场景常见的需求。例如用来筛选目标用户、店铺等。 PostgreSQL中交、并、差可以使用SQL语法来实现(union , union all , except , intersect)。其中只有union all是不去重的,其他都会去重。 例子 select generate...
背景 两张较大的表做JOIN,并且经过WHERE条件筛选出来的量依旧很大时,通常PostgreSQL会选择HASH JOIN,提高JOIN的性能。 PostgreSQL 11增加了一个重量级特性: 并行哈希JOIN。 https://commitfest.postgresql.org/16/871/ 拥有...
背景 数据库SQL也算一门比较神奇的语言了,比如很多需求可以有不同的SQL来实现: 我之前有输出过一个IN的测试,这里面实际上也涉及到多个语法,实现同一个功能点。测试CASE是1亿 in 100万的多种写法的性能差异。 《HTAP数据库 PostgreSQL 场景与性能测试之 25 - (OLTP) IN ,...
背景 在使用数据库时,经常会遇到一些因为客户端输入的类型与数据库定义的类型不匹配导致的错误问题。 例如数据库定义的是布尔类型,而输入的是整型: postgres=# create table cas_test(id int, c1 boolean); CREATE TABLE postgres=...
背景 现实社会中,很多业务产生的数据具有时序数据属性(在时间维度上顺序写入,同时包括大量时间区间查询统计的需求)。 例如业务的FEED数据,物联网产生的时序数据(如气象传感器、车辆轨迹、等),金融行业的实时数据等等。 PostgreSQL的UDF和BRIN(块级索引)很适合时序数据的处理。具体有以下的两个例子...
背景 连接池在数据库应用中是非常重要的一种组件。 虽然空闲连接不干什么,但是由于每个连接有自己的relcache缓存空间,被访问过的对象,都会占用一定的缓存空间(访问的对象越多,内存占用越多)。因此即使连接空闲,实际上依旧占用了SOCKET,以及一定的内存空间。 某个业务长连接的问题(也是relcache的霸...
背景 原文 http://www.codeweblog.com/sqlserve%E5%88%B0pg%E8%BF%81%E7%A7%BB%E9%94%99%E8%AF%AF-%E6%97%A0%E6%95%88%E7%9A%84%E7%BC%96%E7%A0%81%E5%BA%8F%E5%88%97-utf8...
背景 原文 http://www.codeweblog.com/sqlserve%E5%88%B0pg%E8%BF%81%E7%A7%BB%E9%94%99%E8%AF%AF-%E6%97%A0%E6%95%88%E7%9A%84%E7%BC%96%E7%A0%81%E5%BA%8F%E5%88%97-utf8...
背景 如果输入的数据不合法,那么PostgreSQL数据库会报错,不允许写入。 postgres=# select E'\000'; ERROR: invalid byte sequence for encoding "UTF8": 0x00 LOCATION: report_invalid_enc...