PostgreSQL:修订间差异

来自Gea-Suan Lin's Wiki
跳到导航 跳到搜索
此页面具有访问限制。如果您看见此消息,则说明您没有权限访问此页面。
第19行: 第19行:
</syntaxhighlight>
</syntaxhighlight>


 另外可以修改<code>work_mem</code>,預設是4MB,調大一點會對於排序相關的操作有幫助<ref>{{Cite web |url=https://aws.amazon.com/blogs/database/tune-sorting-operations-in-postgresql-with-work_mem/ |title=Tune sorting operations in PostgreSQL with work_mem |language=en |accessdate=2023-04-25 |date=2021-10-16}}</ref>:
 另外可以修改<code>work_mem</code>,預設是4MB,調大一點會對於排序相關的操作有幫助<ref>{{Cite web |url=https://aws.amazon.com/blogs/database/tune-sorting-operations-in-postgresql-with-work_mem/ |title=Tune sorting operations in PostgreSQL with work_mem |language=en |accessdate=2023-04-25 |date=2021-10-16}}</ref> ,如果整台機器都是給PostgreSQL用的,可能的公式是把整台機器記憶體大小乘以0.8,扣掉<code>shared_buffers</code>再除以最大連線數量


<syntaxhighlight lang="ini">
<syntaxhighlight lang="ini">

2023年4月25日 (二) 07:41的版本

PostgreSQL是一套RDBMS

安装

这是Ubuntu下的安装:

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'; wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -; sudo apt update; sudo apt install -y postgresql; sudo apt clean

设定

postgresql.conf

PostgreSQL 14的设定档在/etc/postgresql/14/main下,其他版本的依此类推,通常会修改postgresql.conf将本来只听localhost的改成听所有界面,可以配合后面会提到的pg_hba.conf,但要注意安全性(像是用防火墙只开放特定连线):

listen_addresses = '*'

另外可以修改work_mem,预设是4MB,调大一点会对于排序相关的操作有帮助[1],如果整台机器都是给PostgreSQL用的,可能的公式是把整台机器记忆体大小乘以0.8,扣掉shared_buffers再除以最大连线数量:

work_mem = 16MB

pg_hba.conf

另外修改pg_hba.conf让外面可以连入,这边开放10.0.0.0/8可以连:

echo "host all all 10.0.0.0/8 scram-sha-256" | sudo tee -a /etc/postgresql/14/main/pg_hba.conf; sudo service postgresql restart

常用指令

刚装好的系统可以透过postgres这个帐号权限连进去:

sudo -u postgres psql

建立帐号与资料库,这边建立资料库的部份用两段式建立是为了闪开操作时的权限问题[2]

CREATE USER exampleuser WITH ENCRYPTED PASSWORD 'password';
CREATE DATABASE exampledb;
ALTER DATABASE exampledb OWNER TO exampleuser;

授权给其他使用者操作:

GRANT ALL PRIVILEGES ON DATABASE exampledb TO exampleuser;

超级使用者:

ALTER USER exampleuser WITH SUPERUSER;

管理

列出所有database_name下的schema,类似MySQL里的SHOW CREATE TABLE

pg_dump -d database_name -s -h hostname -U username

参考资料

外部连结