PostgreSql 相较于MSSQL 要注意的地方

十年河东,十年河西,莫欺少年穷

学无止境,精益求精

1、大小写敏感

传统的SQLSERVER数据库默认大小写不敏感,但PgSql是大小写敏感的,如下:

2、varChar 和 Text 其实没你想的那么简单

MSSQL中用得最多的的文本类型是NVARCHAR,这是一个带长度限制的文本类型,对应地,PG中有VARCHAR,这样用没问题,但PG中的文本类型其实跟MSSQL中的文本类型是有点区别的,PG的文本基本上可以认为不限长度,VARCHAR及TEXT对PG内部来说,并没有什么差别,只是在写入的时候,VARCHAR会检查一下长度,所以性能上来看,VARCHAR并不比TEXT要快,较真的话可能还会慢点,因为它要检查长度嘛,所以你在设计数据库的时候可以无脑地将所有文本类型设置为TEXT(或后面提到的CITEXT),长度检查工作放在业务系统中去做即可。

 3、最大连接数

MSSQL 对最大连接数是没有限制的,机器的性能不同,存在最大连接数差异。

但PgSql默认最大连接数是 100,需要修改配置文件,重启服务。

 4、配置远程连接

正在Side Project上尝试用PostgreSQL代替MySQL做数据存储,为了能很好的生存下来,第一步需要来个类似Sequel Pro那样的GUI管理工具,幸运的是我找到了。但是Pg与MySQL一样都需要配置后才能远端外网访问,这篇文章就来介绍具体的配置方法。

1. 修改postgresql.conf

postgresql.conf存放位置在/etc/postgresql/9.x/main下,这里的x取决于你安装PostgreSQL的版本号,编辑或添加下面一行,使PostgreSQL可以接受来自任意IP的连接请求。

listen_addresses = '*'

2. 修改pg_hba.conf

pg_hba.conf,位置与postgresql.conf相同,虽然上面配置允许任意地址连接PostgreSQL,但是这在pg中还不够,我们还需在pg_hba.conf中配置服务端允许的认证方式。任意编辑器打开该文件,编辑或添加下面一行。

# TYPE DATABASE USER CIDR-ADDRESS METHOD

host all all 0.0.0.0/0 md5

默认pg只允许本机通过密码认证登录,修改为上面内容后即可以对任意IP访问进行密码验证。对照上面的注释可以很容易搞明白每列的含义,具体的支持项可以查阅文末参考引用。

完成上两项配置后执行sudo service postgresql restart重新启动PostgreSQL后,允许外网访问的配置就算生效了。

 5、PgSql支持json 和 JsonB类型

create table chargeing
(
id UUID primary key not null,
heart jsonb not null,    
createtime timestamp  not null
);
create index chargeing_heart_index on chargeing using gin(heart);
--下面两句为创建针对json内部的索引 CREATE EXTENSION pg_trgm; CREATE INDEX index_heart_text_jsonb_gin ON chargeing USING gin((heart #
>>'{deviceNo,points,sts}') gin_trgm_ops);

 json 处理 详见:http://www.postgres.cn/docs/12/functions-json.html

posted @ 2024-03-06 15:01  天才卧龙  阅读(101)  评论(0编辑  收藏  举报