代码改变世界

随笔档案-2020年11月

MySQL如何处理隐式默认值

2020-11-26 08:56 by abce, 405 阅读, 收藏, 编辑
摘要: 有同学说遇到了主从不一致的问题。 大概情况是,从库是用mysqldump导出导入数据的方式创建的。创建成功后,在用mysqldump验证主从的表结构是否一致的时候,发现有些表定义不一致: 从他的比较结果可以看到,在从库端,有三个列的定义中被加入了“default null”。 怀疑环境被人人为修改过 阅读全文

批量插入回滚或插入失败导致的MySQL表碎片

2020-11-25 15:57 by abce, 1042 阅读, 收藏, 编辑
摘要: 一般大家都知道,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, 2781 阅读, 收藏, 编辑
摘要: 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, 527 阅读, 收藏, 编辑
摘要: 在关闭mysql server的时候,可能会由于关闭的方式而出现各种问题。下面的一些步骤,可以减少问题的发生。 1.停止复制 在一些特殊环境下,slave节点可能会尝试从错误的位置(position)进行启动。为了减少这种风险,要先停止io thread,从而不接收新的事件信息。 mysql> st 阅读全文

PostgreSQL中的孤儿文件(orphaned data files)

2020-11-18 08:28 by abce, 927 阅读, 收藏, 编辑
摘要: 创建一个测试表 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, 6440 阅读, 收藏, 编辑
摘要: PostgreSQL的并行化包含三个重要组件:进程本身(leader进程)、gather、workers。没有开启并行化的时候,进程自身处理所有的数据;一旦计划器决定某个查询或查询中部分可以使用并行的时候,就会在查询的并行化部分添加一个gather节点,将gather节点作为子查询树的根节点。 查询 阅读全文

PostgreSQL中对IN、EXISTS、ANY/ALL、JOIN的sql优化

2020-11-16 08:47 by abce, 3675 阅读, 收藏, 编辑
摘要: 测试环境: 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, 3578 阅读, 收藏, 编辑
摘要: 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); 阅读全文

PostgreSQL中的collations

2020-11-13 09:08 by abce, 1091 阅读, 收藏, 编辑
摘要: 与Oracle相比,PostgreSQL对collation的支持依赖于操作系统。 以下是基于Centos7.5的测试结果 $ env | grep LC $ env | grep LANG LANG=en_US.UTF-8 使用initdb初始化集群的时候,就会使用这些操作系统的配置。 postg 阅读全文

windows下安装Python虚拟环境virtualenvwrapper-win

2020-11-12 08:33 by abce, 145 阅读, 收藏, 编辑
摘要: 1.使用pip进行安装pip install virtualenvwrapper-win 2.使用easy_install进行安装easy_install virtualenvwrapper-win 3.使用源码进行安装git clone git://github.com/davidmarble/v 阅读全文

PostgreSQL中的template0和template1库

2020-11-11 09:48 by abce, 1913 阅读, 收藏, 编辑
摘要: postgresql中默认会有三个数据库:postgres、template0、template1。 postgres=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges + + + 阅读全文

postgresql中表或索引被创建之后统计信息会立即可用么?

2020-11-10 09:48 by abce, 411 阅读, 收藏, 编辑
摘要: 当我们创建表或者索引之后,他们的统计信息是自动可用么?更精确地描述一下:第一步,我们先创建或加载一个表;第二步,在表上创建一个索引。那我们是默认就有了可用的统计信息,或者还是需要等待一个autovacuum或手动analyze才可用呢? 我们测试一下吧。 首先禁用一下autovacuum,以免在后台 阅读全文

postgresql在何时创建表和索引文件

2020-11-09 08:41 by abce, 1185 阅读, 收藏, 编辑
摘要: oracle中有个特性:deferred segment createion。那么在postgresql中,在创建表或者索引的时候,磁盘上对应的文件是立即创建还是插入第一行数据的时候创建呢? 来做个简单的测试。 postgres=# create table t1(a int); CREATE TA 阅读全文

PostgreSQL中index only scan并不总是仅扫描索引

2020-11-06 08:46 by abce, 1554 阅读, 收藏, 编辑
摘要: postgresql从9.2开始就引入了仅索引扫描(index only scans)。但不幸的是,并不是所有的index only scans都不会再访问表。 postgres=# create table t1(a int,b int,c int); CREATE TABLE postgres= 阅读全文

在postgressql内部修改pg_hba.conf

2020-11-05 08:40 by abce, 1627 阅读, 收藏, 编辑
摘要: 查看pg_hba.conf文件的内容: postgres=# select * from pg_hba_file_rules; line_number | type | database | user_name | address | netmask | auth_method | options 阅读全文

PostgreSQL中的schema和user

2020-11-04 08:52 by abce, 7765 阅读, 收藏, 编辑
摘要: postgresql中,用户创建的所有对象都被创建在指定的schema(或namespace)中。其他用户可能拥有、也可能不拥有访问这些对象的权限,甚至都不可以在对应的schema中创建对象。 从上面的表可以看出,用户(或角色)是全局对象,不是定义在数据库中,而是定义在实例的级别。schema是用户 阅读全文

PostgreSQL中的默认权限(default privileges)

2020-11-03 09:05 by abce, 2708 阅读, 收藏, 编辑
摘要: 有时候我们会遇到这种情况(这种情况并不少见):用户schema中有很多对象,并且你想授权题用户访问这些表。你可以通过grant直接授权,但是当对象属主创建新的对象呢?你可能还需要再次授权,但是postgresql提供一个解决方案。 postgres=# create user a password 阅读全文

MySQL身份验证机制的发展

2020-11-02 08:47 by abce, 396 阅读, 收藏, 编辑
摘要: 起初,验证机制被称作mysql_old_password,并不是很安全:基于一个哈希函数,密码长度为16个字节。攻击者从存储在mysql.user表的password列的哈希值找出明文密码并不复杂。它已经在MySQL 5.7.5中被删除了。NR MySQL4.1引入了新的方法,mysql_nativ 阅读全文
点击右上角即可分享
微信分享提示