摘要:Prepared transactions是PostgreSQL的一个关键特性。理解该特性提供的功能和处理任何潜在的陷阱对于系统的维护是很关键的。所以,我们来深入研究一下具体什么是prepared transactions。 关于事务 在数据库系统中,事务是一种处理通常包含多个语句的块中的全部或零个 阅读全文
explain命令可能会修改MySQL数据
2020-12-08 10:15 by abce, 497 阅读, 1 推荐, 收藏,
摘要:如果有人问你,对查询执行EXPLAIN是否可以改变你的数据库,你可能会说不会; 通常都是这么认为的。EXPLAIN应该向我们展示查询是如何执行的,而不是执行查询,因此它不能更改任何数据。 不幸的是,在这种情况下,常识并不适用于MySQL(在写这篇文章的时候,MySQL 8.0.21和以前的版本)-有 阅读全文
MySQL如何处理隐式默认值
2020-11-26 08:56 by abce, 449 阅读, 0 推荐, 收藏,
摘要:有同学说遇到了主从不一致的问题。 大概情况是,从库是用mysqldump导出导入数据的方式创建的。创建成功后,在用mysqldump验证主从的表结构是否一致的时候,发现有些表定义不一致: 从他的比较结果可以看到,在从库端,有三个列的定义中被加入了“default null”。 怀疑环境被人人为修改过 阅读全文
批量插入回滚或插入失败导致的MySQL表碎片
2020-11-25 15:57 by abce, 1074 阅读, 0 推荐, 收藏,
摘要:一般大家都知道,delete操作可以引起表碎片问题。但引起表碎片的并不仅仅只有delete操作。这里将演示一下由insert操作引起的表碎片。 在MySQL中,有两种碎片: 1.表中的页是完全空闲的 2.表中的页没有被完全填充,还有部分空闲空间 有三种情况下,insert操作会导致表碎片: 1.带有 阅读全文
[Warning] InnoDB: Difficult to Find Free Blocks in the Buffer Pool
2020-11-24 09:59 by abce, 2955 阅读, 0 推荐, 收藏,
摘要:MySQL错误日志给出警告信息: [Warning] InnoDB: Difficult to find free blocks in the buffer pool (336 search iterations)! 0 failed attempts to flush a page! Consid 阅读全文
安全地关闭MySQL
2020-11-19 12:09 by abce, 558 阅读, 0 推荐, 收藏,
摘要:在关闭mysql server的时候,可能会由于关闭的方式而出现各种问题。下面的一些步骤,可以减少问题的发生。 1.停止复制 在一些特殊环境下,slave节点可能会尝试从错误的位置(position)进行启动。为了减少这种风险,要先停止io thread,从而不接收新的事件信息。 mysql> st 阅读全文
PostgreSQL中的孤儿文件(orphaned data files)
2020-11-18 08:28 by abce, 1008 阅读, 0 推荐, 收藏,
摘要:创建一个测试表 postgres=# create table t1(a int); CREATE TABLE postgres=# select pg_relation_filepath('t1'); pg_relation_filepath base/75062/75297 (1 row) po 阅读全文
PostgreSQL的并行查询
2020-11-17 08:48 by abce, 7170 阅读, 0 推荐, 收藏,
摘要:PostgreSQL的并行化包含三个重要组件:进程本身(leader进程)、gather、workers。没有开启并行化的时候,进程自身处理所有的数据;一旦计划器决定某个查询或查询中部分可以使用并行的时候,就会在查询的并行化部分添加一个gather节点,将gather节点作为子查询树的根节点。 查询 阅读全文
PostgreSQL中对IN、EXISTS、ANY/ALL、JOIN的sql优化
2020-11-16 08:47 by abce, 4140 阅读, 0 推荐, 收藏,
摘要:测试环境: postgres=# select version(); version PostgreSQL 11.9 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39), 64-bit (1 阅读全文
PostgreSQL中enable、disable和validate外键约束
2020-11-14 09:22 by abce, 3993 阅读, 0 推荐, 收藏,
摘要:postgres=# create table t1(a int primary key,b text,c date); CREATE TABLE postgres=# create table t2(a int primary key,b int references t1(a),c text); 阅读全文
浙公网安备 33010602011771号