- 博客(460)
- 资源 (129)
- 收藏
- 关注
原创 造数据,别慌!使用python faker创建大批量随机测试数据
在数据库的使用过程中,有很多场合是要自行去构造大规模数据,以供测试、性能功能验证使用。PostgreSQL - 大规模随机数据生成方法里介绍了PostgreSQL中生成大规模随机数据的方法。这种方法,生成数据比较快,但是数据大多是对业务场景没有太大意义的数据,或者说对业务不够友好。本文再介绍通过一些第三方库,插入一些相对友好的随机数据。那就是通过Python faker库来生成数据。Faker是一个Python软件包,可为您生成伪造数据。
2024-04-14 09:57:56 1028 2
原创 DBA,35岁“危机“, 该如何面对?
如果翻一翻最近一两个月的公众号,到处都在散播着,过了35岁,DBA面临着失业的风险。因为再也不需要那么多的DBA了。而一旦失业,再重新找工作,难度相对于年轻的竞争者,不再有那么大的优势了。事实果真如此吗?如果遇到了,该如何面对?啰啰嗦嗦地说了些个人体会,其实,不当对DBA,对于所有从事IT相关工作的人,或许都有些启发。祝看到本文的广大老铁,与身体和平相处,能顺利应对各类变化,可以有远虑,行动配套上就足矣。微信公众号:数据库杂记 个人微信: _iihero我是iihero. 也可以叫我Sean.
2024-04-05 19:09:32 779
原创 PostgreSQL中vacuum 物理文件truncate发生的条件
前段时间,有些同学说到vacuum截断的行为时,认为,只要末尾是空页,无论多少,都会被截断,真是这样的吗?PostgreSQL当中,由于vacuum的操作并不总能将死元组的空间进行”物理截断”,虽然说是回收了(表示空间可重用),但是真正的物理文件的大小依然不会收缩。那么什么时候这个空间会被真正截断呢?摘自: src/backend/access/heap/vacuumlazy.c/**//**/if (!
2024-03-15 20:03:59 1083
原创 由恶劣事件: CrowdStrike发布案例更新导致微软全球蓝屏事件的启示
网络安全公司 CrowdStrike周四发布软件更新后,机场、银行、证券交易所、911 服务、交通系统、酒店、新闻媒体、医院、紧急服务等开始出现臭名昭著的蓝屏死机 (BSOD)。在看似多年来最严重的 IT 中断中,大规模的网络安全软件问题正在全球范围内造成混乱。漂亮的蓝屏(1)耀眼的蓝屏2看起来是这样的,壮不壮观?似乎最后的元凶也找到了。居然是刚入职的第一天,就做成了这个壮举。一个字:“服!” 太牛气了。看来,Crowdstrike公司对这位新员工是无比的信任啊。
2024-07-27 15:48:02 840
原创 深入搞懂Checkpoint调优基础及原理
在执行大量写操作的系统上,调优检查点对于获得良好的性能至关重要。然而,检查点是我们经常发现混淆和配置问题的地方之一,无论是在社区邮件列表中,还是在为客户提供支持和咨询期间。这篇文章旨在解释检查点是什么——目的和数据库如何实现它——以及如何调优它们。注:这是在2016年最初原作者写的一篇博文的更新版本,更新后反映了PostgreSQL配置的各种变化。否则,总体调优方法基本保持不变。现在您应该了解了检查点的目的,以及调优检查点的基本知识。
2024-07-26 07:24:04 904
原创 优化技法:使用In-memory Disk代替PostgreSQL中的临时文件
下边的内容来自技术博客,感觉内容真心不错。完整的介绍到这里,与大家共享。最近,在调试一个CREATE INDEX操作的性能问题时,我被提醒,PostgreSQL在执行并行查询(包括并行索引创建)时可能会产生临时文件,因为每个工作进程都有自己的内存,可能需要使用磁盘空间来排序或散列表。所以,为了尝试加快索引创建,我认为使用tmpfs将这些临时文件直接移动到内存中是有益的,并想测试这个理论,写这篇博客文章:-)
2024-07-26 07:22:37 572
原创 不尝试一下?计算机领域两大赛事来了!!
最近,熊二新来的同事小强比较关注国内的一些赛事信息。这不,近期有两大赛事。这两大赛事,主要还是面向高校学生的。一个是搞网络安全方向的:第二届京麒CTF挑战赛,另一个是搞数据库方向的:2024年全国大学生计算机系统能力大赛 数据库管理系统设计赛。CTF (Capture The Flag),搞网络安全的大都应该知道这个。想懂的都懂,不懂的百度一下就知道咋回事。
2024-05-04 07:29:43 1112
原创 光头强:IBM收购HashCorp (Terraform)有多大意义?
公司在光头强强总以及合伙人熊大熊二的艰苦努力下,最近公司进了一次扩容。甚至将原来一些甲方的研发人员也拉入旗下,其中就包括与熊二共事多年的小玲子以及小强同学。光头强也注意到最近在IT软件领域,频频发生一些并购事件。比如IBM将收购 HashiCorp(Terraform开发商)。
2024-05-04 07:27:03 713
原创 聊聊装机使用量最大的SQLite数据库
我曾经在DuckDB与PostgreSQL结合一下,PostgreSQL会如虎添翼一文中简要提过DuckDB与SQLite两者之间的关系。在嵌入式开源数据库里头,SQLite是绝对的OLTP的王者,而DuckDB则是或者将是OLAP的王者。本文就简单聊聊SQLite数据库。SQLite的代码质量非常高,一个重要的保证是它的测试覆盖率几乎100%。这种要求尽乎苛刻。盈利思路也非常明确。以它目前的财务状况,很容易支撑到20年后。但是有很重要的一点是,它的专业服务与支持是它生存的亮点。
2024-04-08 08:49:39 1258 1
原创 也说说Sybase ASE中的空间膨胀及应对方案
直观来讲,数据库是典型的以空间换时间的思路去提高数据检索的效率。我们先把数据“入”进去,组织好,建好索引,都为了什么?相当大一部分只不过是为了最终能快速得到查询的结果。当然这又引发了好多子项,比如,怎么“入”得快而又不发生冲突,怎么在相对少的资源的情况下得到相同的效果。这其间,空间的膨胀,几乎不可避免,重要的是,膨胀是否理?是否在物理资源的承受范围之内?前边提到了PostgreSQL的空间膨胀,这篇短文将提到ASE中比较典型的空间膨胀现象,以及如何有效的去避免它。
2024-04-07 10:11:44 82
原创 理解PostgreSQL中的postmaster.pid
在PG中,一个简要的体系结构图可以大致画成下边的样子:Server端基本上分成backend process和若干background process。这些process都是一个名为postmaster进程的子进程。而postmaster则是postgres进程的别名。
2024-04-07 10:06:11 552
原创 关于PostgreSQL JDBC中的log输出是怎么回事?
挖一挖:PostgreSQL Java里的double类型存储到varchar精度丢失问题写完之后,有热心的朋友, 就发留言问,那个log配置了半天,好像不太管用。就是说,用了自定义的配置文件,最后都不起作用,看不到有效的输出。首先强调一下,PG数据库的外围生态是非常完善的,就是说,它几乎支持各种主流的访问接口,这个完全为亚于当规模最大使用范围最广的一些大型商用数据库。从这个角度来看,它的发展前景不可限量 ,最贴近它自身的外围用户不就是使用这些访问接口的广大开发人员吗?内容与上边定义的相同。
2024-04-04 13:50:58 597
原创 也聊聊PostgreSQL中的空间膨胀与AutoVacuum
PostgreSQL数据库,由于其自身特有的MVCC机制,它没有自己的Undo Log。更新操作相当于一个删除叠加一个插入操作,反映在表数据文件当中就是内部的一条新增记录,加上原有记录的删除。那些已被删除的元组(死元组)所占的空间如果得不到及时的回收,那么表数据文件所用空间将会不断膨胀,查询及其它CUD操作也会变慢,直到系统不可承受。这就是AutoVaccum存在的原因。
2024-04-04 08:58:44 1389
原创 Sybase ASE中的char(N)的坑以及与PostgreSQL的对比
昨天,一朋友向我咨询Sybase ASE中定长字符串类型的行为,说他们的客户反映,同样的char类型的数据,通过jdbc来查,Sybase库不会带空格,而PostgreSQL会带。而varchar(N) NULL与NOT NULL,行为也一致,无论是直接取值,还是拼接后再取值,都留一个多余的字符(长度够宽的话)。这样来看,只要不在SQL语句里头拼接,那么char(N) NULL或NOT NULL,两种数据库的行为应该是一样的。如果是Not Null的char(N),则不会截掉空格,无论是否与其它字符拼接。
2024-04-04 08:54:46 450
原创 挖一挖:PostgreSQL Java里的double类型存储到varchar精度丢失问题
try {// 连接到数据库)";= null) {发现 PostgreSQL11和12及以后的版本,插入到表t1中的记录值不一样。a48(3 rows)a------4848.148.9(3 rows)这个问题如何分析?从驱动层来看,发送过去的内容或指令应该是一样的。
2024-04-01 07:32:27 1044
原创 HANA中的内存及磁盘使用统计
在实际使用中,通过HANA的admin控制台,确实可以得到很多重要的信息。但有的时候不如人愿,你需要提供相应的SQL语句得到具体的信息。将上述统计信息纳入日常监控,就可以对数据库表的使用情况了如指掌。结合表的记录条数信息。非常有助于HANA数据库的日常监控与维护。比如,我要得到所有的行表的内存及磁盘占用信息;我需要得到所有列表的内存及磁盘占用信息。实际上HANA是有这些统计的SQL语句的。
2024-03-31 11:41:17 799
原创 深入PostgreSQL中的pg_global表空间
默认情况下,所有新建的数据库对象都建立在这个表空间下,对应的根目录是$PGDATA/base。而pg_global对应的是全局表空间,对应的根目录是$PGDATA/global。它到底指的是哪个表空间,显而易见,它就是pg_default表空间。我们可以想象,你database, tablespace之类的,甚至还有role之类的定义,肯定要放到全局共享的地方,以保证每个数据库在检索的时候,可以检索得到。官方文档中的定义是,pg_global中存放的都是同一个实例当中全局共享的对象。我们一样也可以得到。
2024-03-31 11:36:53 1219
原创 小小狠招:巧妙使用HANA数据库的jdbc driver
一个小小的jdbc驱动,HANA数据库为它提供的功能还是比较强悍的。在关键的时候,能起到非常大的作用。如果只是一些非常简单的连接性需求,甚至不需要任何第三方工具,直接使用简单的命令行就可以顺利完成。
2024-03-31 07:00:23 1063
原创 【重磅消息】HANA Cloud QRC1/2024发布了
SAP HANA Cloud中引入了用户自定义的应用锁。这是用于自定义应用程序的,可以通过调用过程获得或释放。详细的锁的功能介绍见文档:sap-hana-cloud-sap-hana-database-administration-guide/locks[3]
2024-03-30 07:47:43 1043
原创 PG中的一例简单的update看表膨胀
PostgreSQL数据库的MVCC机制中,一个明显的特点是,在执行DELETE操作,它一般并不立即擦除要删的数据,通常只是做一个标记,留给VACUUM进程去做相应的清理,并且是有条件的清理。再补充一个小的验证性测试,如果我们将fillfactor调整为20, 预留80%的空间给update操作,看看第1种情况下,花的时间是啥样的?在实际使用当中,对于高频的更新操作的表,为减轻vacuum的负担,可以建议性的将fillfactor调整为80或75,给Update操作预留适当的空间。这些都是要占有空间的。
2024-03-28 06:32:56 467
原创 使用GO对PostgreSQL进行有意思的多线程压测
针对PostgreSQL进行压缩,有很多相关的工具。有同学又要问了,为何还要再搞一个?比如,pgbench, sysbench之类的,已经很强大了。是的,它们都很强大。但有时候,在一些特殊的场景,可能自己构造一个更能接近真实的生产环境。这里,我半写,半借助于ChatGPT,搞出一个代码片段来模拟启动一段多线程并发SQL请求,作用于PostgreSQL数据库。然后,你可以对请求执行完以后的结果进行观测,尤其是表膨胀,受影响记录条数之类的。基于此,我们还可以进行持续改造,快速用于工作之中。
2024-03-28 06:28:41 865
原创 35岁,害怕失业吗?程序员该如何破解“生涯天花板”
只要拥有对技术的热爱、强烈的自我驱动力和不断进步的意愿,任何年纪的程序员都不会被“淘汰”。从我个人的角度来理解,从中国国内的实际情形来看,随着年龄的增长,35岁以上,确实存在着一旦失业,再找工作,难以找到自认为与以并薪水相匹配的工作。不论年纪大小,不断更新自己的知识储备,跟上行业动态,并努力掌握新的技能,可以帮助程序员应对新兴技术的挑战。最后总结,任何时候,不要以躺平的心态去工作,那样只会错失很多机会,机会是自己通过持续学习和积累去赢得的,天下没有免费白送的午餐。所以,忧患意识的产生也是可以理解的。
2024-03-27 14:08:13 469
原创 SAP BTP云上一个JVM与DB Connection纠缠的案例
最近在CF (Cloud Foundry) 云平台上遇到一个比较经典的案例。因为牵扯到JVM (app进程)与数据库连接两大块,稍有不慎,很容易引起不快。在云环境下,有时候相互扯皮的事蛮多。如果是DB的问题,就会找DB相关部门。关键是如何自证。涉及到职场生存法则,大家都不愿意去背锅,谁背锅,意味着谁要担责。下边我们看看这个案例。有的时候,问题不是孤立存在的,从各个层面进行分析,逐个排错,最后还是能找到出问题的原因。如何规避此类事件再次发生,只能进一步加强监控。
2024-03-26 06:57:11 1458
原创 强力工具(欢迎fork):Java版本的Sybase ASE ISQL命令行
就是说,你不能在远程直接通过ASE的isql命令行连接cloud上的数据库,必须通过特定的tunnel。曾经,经常遇到有人问,Sybase (ASE, 国内基本上把以前的Sybase ASE数据库简称为Sybase数据库, 现在官方已经叫做SAP ASE,在我看来无所谓。基于上述需求,我开源了一个短小的ase.isql命令行工具,完全java实现,基于现有的Sybase Jconn JDBC驱动。于是,既能提供日常操作,同时又能调用SQL脚本用于远程执行的Java isql客户端,就有存在的必要了。
2024-03-25 07:09:52 247
原创 秒懂快速熟悉: PostgreSQL中的Copy(快速加载)
这里简要介绍一下PG中的Copy以及\Copy快速加载数据的基本用法及注意事项。同时也比较了Batch Insert与Copy之间的性能差异。它们在PG日常维护与使用的场景中经常要用到。
2024-03-25 06:57:42 355
原创 PostgreSQL FDW(外部表) 简介
创建file_fdw 扩展创建外部表(file_fdw)24 empno int, -- primary key, 此处不能加外键7 age int,像普通表一样访问外部表使用元命令 \des 和 \det 查看库中有哪些外部表和外部服务器模块提供了外部数据包装器,它可以被用来访问存储在外部PostgreSQL服务器中的数据。这个模块提供的功能大体上覆盖了较老的dblink模块的功能。但是提供了更透明且更兼容标准的语法来访问远程表,并且可以在很多情况下给出更好的性能。
2024-03-25 06:53:18 590
原创 史上最全:PostgreSQL SQL的基础使用及技巧
refer to: https://www.postgresql.org/docs/14/datatype.html为避免一些不必要的麻烦,不要用关键字去定义数据库对象的名字。它会给PG的解析造成潜在的问题。尤其是在生产环境中,不要给自己制造麻烦。E前缀,C风格的转义符位串常量,二进制使用B前缀,16进制采用X作前缀3、简单SQL3.1、基础SQL建表删表更改表see: https://www.postgresql.org/docs/14/sq
2024-03-24 08:31:44 1948 1
原创 PostgreSQL数据库中表的物理大小, 妙懂
PostgreSQL中对于稍长一点的列,直接使用了TOAST表来存储,默认是会对表中的数据进行压缩的。关于TOAST, 以后或有时间专门做简单介绍。这是一个很有意思的话题。尤其是在我们做物理设计和空间大小评估的时候。这里以table相关size为例,重点介绍一下。如何计算对应的toast表相关的空间大小?数据库中表的物理大小。
2024-03-24 08:12:59 300
原创 PostgreSQL中控制文件的解析与恢复
它的路径位于:控制文件里存储了数据库唯一系统标识符、系统状态数据、数据库启动前系统必须恢复到的检查点信息、数据库的配置兼容backend进程执行的参数、指明类型timestamp、interval、time内部格式的标志、指明不同类型传值(pass-by-value)状态的标志以及一些数据库的重要信息。我们可以通过pg_controldata命令直接读取PostgreSQL控制文件内容。控制文件内容主要分为是三部分,初始化静态信息、WAL及检查点的动态信息、一些数据库配置信息。
2024-03-23 22:33:08 1108
原创 使用下SAP HANA强大的Cloud控制台
SAP的HANA数据库(注:这里指是云平台版本,不是platform的本地部署版本)的版本发布,基本上每个季度都有一次发布。2024年的第一个版本内部已经Release了,很快就会推到生产环境当中。当前要发布的版本是:2024.2.6 (QRC 1/2024)。而且每个版本的维护周期最长不会超过7个月(等于半年之后有一个月的缓冲期)。更新迭代相当快。也是为了适应云环境的需求。本文并不打算介绍2024. QRC 1的新功能,待正式发布之后再进行有关功能的详细介绍。
2024-03-23 03:50:07 71
原创 扩展一下BenchmarkSQL,新增支持ASE/HANA/DB2/SQLServer,可以随便用了
不多说,已经在github上开源:https://github.com/iihero/benchmarksql-v5。
2024-03-23 03:40:53 268 1
原创 高可用: 体验使用Odyssey连接池(一)
关于 Odyssey ,它是一种相对高级的多线程 PostgreSQL 连接池。内部采用异步的多线程体系结构,使用事件驱动的异步方式来实现 内部逻辑,但是对外提供的接口看起来仍像是同步的过程方式,而没有采用回调的方式来实现,便于开发人员使用。从支持程度来讲,它的多线程方式比pgbouncer似乎更胜一筹,单个应用能更好的利用CPU,并且可以支持更大规模的并发。最近在总结PG的一些连接池的使用时,体验了一把Odyssey(奥德赛)连接池。顺便说一句,俄国的工程师水平还是相当不错的。
2024-03-23 03:30:20 58
原创 PG中一个表的3~8个文件是怎么来的?
微信公众号:数据库杂记 个人微信: _iihero我是iihero. 也可以叫我Sean.Sean@墨天轮 (https://www.modb.pro/u/16258)数据库领域的资深爱好者一枚。SAP数据库技术专家与架构师,PostgreSQL ACE.水木早期数据库论坛发起人db2@smth. 早期多年水木论坛数据库版版主。国内最早一批DB2 DBA。前后对Sybase, PostgreSQL, HANA,Oracle, DB2, SQLite均有涉猎。
2024-03-21 06:31:58 997
原创 PostgreSQL中的事件触发器,用途多多
DBA的工作范围以内,比较头疼的几件事之一,恐怕就是数据被误删。于是经常看到网上的一些文字,诸如:”删库跑路“。那也只是戏说,真正追究起来,跑是不跑不掉的。所以,千万不要干傻事。经验老道的DBA,向来是拿”备份“技术作为生存第一要素。数据丢了,连过去的有效备份都不具备的话,那可真是要被迫跑路了。本文试着从另外一个角度,即防御角度,看看PostgreSQL中如何通过事件触发器来阻断用户的drop table或truncate table之类的操作。顺便对PostgreSQL中的事件触发器的使用做些介绍。
2024-03-21 06:25:34 1205
原创 Redis 7.0.X 在Windows下编译支持TLS连接,遇坑埋坑
Redis在版本6以及以后,基于安全的需要,就开始支持TLS连接了。基于Windows版本的维护,在网上以前有两个库,一个是微软维护的,维护到3.x之后就变成archive了,见后边的参考链接。另一个库也只维护到5.x。还没有一个windows版本维护到6及以上的版本。如果仔细推敲其原因,可能还是在windows平台上用的不多吧。简单的非TLS的在windows上跑跑也不差不多了。那到底有没有可能编译出一份支持TLS的windows版本呢?
2024-03-19 07:00:42 1382
原创 好用的Redis 客户端工具有几个? 这里推荐两三个
记得前边为了使用windows上的命令行客户端去连接Cloud上边的 hyperscale Redis, 很是费了半天劲,才折腾出一个可以连接的支持TlS的版本。里边要用到msys + mingw,而且接连几个坑。Redis 7.0.X 在Windows下编译支持TLS连接,遇坑埋坑那么有没有单独的GUI式的客户端工具可以连接呢?如果有可能,将两者结合起来用,看着也是蛮不错的。Redis作为一款优秀的开源K/V数据库,挑选合适的GUI客户端工具还是蛮重要的。
2024-03-19 06:58:45 8609
原创 PostgreSQL中的CTE(公共表表达式)知多少? - (中级)
PostgreSQL中的CTE:公共表表达式是一种更好的临时表. 用于较大查询的辅助语句.用于只在一个查询中存在的临时表。在WITH子句中的每一个辅助语句可以是一个SELECTINSERTUPDATE或DELETE,并且WITH子句本身也可以被附加到一个主语句,主语句也可以是SELECTINSERTUPDATE或DELETE。这也是PostgreSQL的一个非常重要的功能。有很多商用关系数据库甚至还没有这个特色功能。仔细再读了下这篇文档,感觉组织的不是很理想。试图重新组织一下,便于理解其中的使用方法。
2024-03-18 11:01:27 1890
x64_linux下Sybase ASE15.7(4之4)
2012-11-27
x64_linux下Sybase ASE15.7(4之2)
2012-11-27
x64_linux下Sybase ASE15.7(4之1)
2012-11-27
正式发布jmyetl-1.0.2
2012-06-11
oracle11.2.0server非安装版(学习使用)
2012-03-11
Sybase ASE 12.5.4 ODBC驱动包
2011-12-13
Windows下MySQL自动下载并安装为服务mini工具包
2011-01-23
Sybase ASE ado.net2.0 驱动包AdoNet2.AseClient
2010-12-21
ASA (Sybase SQL Anywhere 11.0)文档
2010-12-06
hisqlapi_1.0.0.9 数据库通用API C++ wrapper
2010-07-04
oracle10g for windows 32平台精简版(2之2)
2010-05-29
oracle10g for windows 32平台精简版(2之1)
2010-05-29
Sybase ASE15.0.2 Linux 32bit x86版(10之9)
2010-05-25
Sybase ASE15.0.2 Linux 32bit x86版(10之8)
2010-05-25
Sybase ASE15.0.2 Linux 32bit x86版(10之7)
2010-05-25
PostgreSQL 15.6 Document 帮助文档 chm文件格式
2024-03-26
史上最新PostgreSQL16.2的帮助文档 all-in-1-chm 文件
2024-03-24
史上最新PostgreSQL15.2的帮助文档 all-in-1, chm格式,非常方便
2024-03-24
史上最新PostgreSQL14.4的帮助文档 all-in-1-chm文件
2024-03-23
SAP Sybase ASE 16 JDBC 最新驱动:
2022-06-13
Sybase (ASE) jdbc 官方驱动包 (最新版)
2019-05-06
Sybase ASA (SQLAnywhere) 17.0文档安装版
2019-05-06
SAP Sybase IQ命令行客户端
2014-03-20
SAP Sybase ASA160开发版Windows版 2之2
2013-12-27
SAP Sybase ASA160 Windows版 文件2之1
2013-12-27
SAP Sybase ASA160 Linux版开发人员版(之二,最后一个文件)
2013-12-20
SAP Sybase ASA160 Linux版开发人员版(之一)
2013-12-20
支持Sybase ASA9 (SQLAnywhere9/8/10)数据库访问的Sybase Central客户端
2013-12-19
SAP Sybase ASE15.7解压缩版客户端(ScjviewASE157.zip)
2013-12-18
解压缩版Sybase ASA12.0客户端工具,非常好用
2013-11-28
Windows下MySQL自动下载安装小工具包(更新)V1.2
2013-11-24
x64_linux下Sybase ASE15.7(4之3)
2012-11-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人