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