2013年12月31日星期二

一個MySQL DBA著眼於PostgreSQL的

Original post: http://anothermysqldba.blogspot.com/2013/12/a-mysql-dba-looks-at-postgresql.html

所以這是/一之旅的MySQL DBA尋找到的PostgreSQL 。 這不是一個攻擊只是觀察和例子。 

使用的CentOS 6.5 64位: 

RPM-IVH http://yum.postgresql.org/9.3/redhat/rhel-6.5-x86_64/pgdg-centos93-9.3-1.noarch.rpm

百勝groupinstall“PostgreSQL數據庫服務器9.3 PGDG” 
--->包裝postgresql93.x86_64 0:9.3.2-1PGDG。RHEL6將安裝 
--->包裝postgresql93-contrib.x86_64 0:9.3.2-1PGDG。RHEL6將安裝 
--->包裝postgresql93-libs.x86_64 0:9.3.2-1PGDG。RHEL6將安裝 
 
--->包裝postgresql93-server.x86_64 0:9.3.2-1PGDG。RHEL6將安裝 

yum的安裝postgresql93服務器 

服務的PostgreSQL-9.3初始化數據庫 
初始化數據庫:[ 確定 ] 
服務的PostgreSQL-9.3啟動 
啟動PostgreSQL的-9.3服務:[ 確定 ] 
在chkconfig的postgresql-9.3 

下面所有的例子都是基於PostgreSQL的維基 
#蘇- Postgres的 
-bash的-4.1 $ psql的 
 
psql的(9.3.2) 

Postgres的=#CREATE USER testuser的密碼'1234'; 
CREATE ROLE 
Postgres的=#GRANT ALL ON SCHEMA測試,以testuser的; 
GRANT 

Postgres的=#GRANT ALL ON架構中測試,以testuser的所有表; 
GRANT 
Postgres的=#\ q
-bash的-4.1 $退出
註銷
#蘇testuser的

$ PWD 
/首頁/ testuser的 
$ psql的-D Postgres的 
psql的(9.3.2) 

鍵入“help”以獲得幫助。 
Postgres的=> CREATE TABLE test.test(COLTEST為varchar(20));
CREATE TABLE
Postgres的=>插入test.test(COLTEST)VALUES('它的工作原理!');
INSERT 0 1
Postgres的=> SELECT * FROM test.test;
COLTEST
-----------
它的工作原理!
(1行)

Postgres的=> DROP TABLE test.test;
DROP TABLE
Postgres的=>

我也注意到,這些GRANT語句9.3運作良好,但最初的發行版安裝了一個8 *版本和一些命令失敗。 

順便說一句......你當然還有功能,你會期望從一個穩定的RDBM系統。 誠然這些都是很簡單的例子。 

Postgres的=> EXPLAIN SELECT * FROM test.test; 
查詢計劃 
-------------------------------------------------- ------ 
序列掃描測試上(成本= 0.00 .. 19.20行= 920寬度= 58) 

顯示數據庫== \升 
Postgres的- > \升 
Postgres的| Postgres的| UTF8 |的en_US.UTF-8 |的en_US.UTF-8 | 
template0中| Postgres的| UTF8 |的en_US.UTF-8 |的en_US.UTF-8 | = C / Postgres的+ 
| | | | | Postgres的= CTC / Postgres的 
的template1 | postgres的| UTF8 |的en_US.UTF-8 |的en_US.UTF-8 | = C / Postgres的+ 

| | | | | Postgres的= CTC / Postgres的 

使用的是標準的SQL: 
Postgres的- >使用Postgres的 

列出所有模式: 

Postgres的- > \ DN 
公眾| Postgres的 

測試| Postgres的 

SHOW CREATE TABLE等是更多一點的工作。 授予一個MySQL DBA會看到它作為,因為我們是用來做更多的工作。PostgreSQL使用表空間超過MySQL用戶是用來做什麼。

  Postgres的=> CREATE TABLE sometable(somefield數據類型為varchar(255),anotherfield為varchar(150),DateField的日期); 
  CREATE TABLE 
  Postgres的=> INSERT INTO sometable(somefield,anotherfield,的DateField)VALUES('FUBAR','rabuf','2013-12-30'); 
  INSERT 0 1 
  Postgres的=> INSERT INTO sometable(somefield,anotherfield,的DateField)VALUES('FUBAR','rabuf',NOW()); 
  INSERT 0 1 
  Postgres的=> INSERT INTO sometable(somefield,anotherfield,的DateField)VALUES('fubar2','rabuf2',NOW()); 
  INSERT 0 1 
  Postgres的=>從sometable選擇*; 
   somefield | anotherfield |的DateField   
  ----------- + -------------- + ------------ 
   FUBAR | rabuf | 2013-12-30 
   FUBAR | rabuf | 2013-12-30 
   fubar2 | rabuf2 | 2013-12-30 
  (3行) 

Postgres的=> SELECT * FROM sometable WHERE somefield ='FUBAR'; somefield | anotherfield |的DateField ----------- + -------------- + ---- -------- FUBAR | rabuf | 2013-12-30 FUBAR | rabuf | 2013-12-30(2排)

Postgres的=> \? < -幫助將告訴您如何來瀏覽周圍。

顯示表== \ DT

Postgres的=> \ DT
關係一覽表
架構|名稱|型號|業主
-------- + ----------- + -------- + ----------
公共| sometable |表| TESTUSER

Postgres的=> ALTER TABLE sometable ADD COLUMN intfield的int [11]; ALTER TABLE

Postgres的=> SELECT * FROM sometable; somefield | anotherfield |的DateField | intfield ----------- + -------------- + -------- ---- + ---------- FUBAR | rabuf | 2013-12-30 | FUBAR | rabuf | 2013-12-30 | fubar2 | rabuf2 | 2013-12-30 |(3行)

SHOW CREATE TABLE == \ D +表名
Postgres的=> \ D + sometable
表“public.sometable”
專欄|類型|修飾語|存儲|統計指標|說明
-------------- + ------------------------ + ---------- - + ---------- + -------------- + -------------
somefield |字符改變(255)| |擴展| |
anotherfield |字符改變(150)| |擴展| |
的DateField |日期| |平原| |
intfield |整數[] | |擴展| |
擁有的OID:無


為了幫助更多的可以安裝pgAdmin的
yum的安裝pgadmin3_93

如果這能夠工作,它是如何工作可能是另一種整個博客文章。

到目前為止.... 我會堅持與MySQL但這是使用PostgreSQL的只是一個簡單的例子。 這可以讓你開始你可以評估自己。

下面有用的鏈接。 請參考這些,因為他們有更多的經驗與PostgreSQL的比我好。