OushuDB 資料庫基本用法 (上)

xiaokissoo發表於2021-11-24

1、啟動/停止OushuDB

啟動OushuDB有兩種方式,一種是通過”hawq start cluster”命令來啟動整個叢集,包括master和segment。啟動哪些segment是由”/hawq-install-path/etc/slaves”中包含的節點確定的。

source / usr / local / hawq / greenplum_path . sh # 設定OushuDB環境變數 hawq start cluster # 啟動整個OushuDB叢集

另外一種方式是分別啟動OushuDB master和segment。因為OushuDB master和segment是解耦合的,分別啟動master和segment是可行的。

hawq start master # 啟動master,指的是啟動本地master hawq start segment # 啟動segment,指的是啟動本地segment

重新啟動或者停止OushuDB也有兩種方式:

# 方式一 hawq restart cluster # 重啟OushuDB叢集 hawq stop cluster # 停止OushuDB叢集# 方式二 hawq restart master # 重啟本機的OushuDB master hawq restart segment # 重啟本機的OushuDB segment hawq stop master # 停止本機OushuDB master hawq stop segment # 停止本機OushuDB segment

啟動/停止Magma

OushuDB4.0 實現了單獨起停Magma服務,具體命令如下:

# 方式一 OushuDB4.0 叢集起停帶Magma服務 [只有hawq init|start|stop cluster命令可以帶--with_magma選項] hawq init cluster -- with_magma # 啟動OushuDB叢集時,使用--with_magma選項,同時啟動Magma服務, 3.X版本不支援。# 方式二 Magma服務單獨起停 magma start | stop | restart clustermagma start | stop | restart node

關於OushuDB hawq命令的詳細用法,可以通過”hawq –help”命令得到。

changlei:build ChangLei$ hawq --help

usage: hawq <command> [<object>] [options]

        [--version]

The most commonly used hawq "commands" are:

start         Start hawq service.

stop          Stop hawq service.

init          Init hawq service.

restart       Restart hawq service.

activate      Activate hawq standby master as master.

version       Show hawq version information.

config        Set hawq GUC values.

state         Show hawq cluster status.

filespace     Create hawq filespaces.

extract       Extract table metadata into a YAML formatted file.

load          Load data into hawq.

scp           Copies files between multiple hosts at once.

ssh           Provides ssh access to multiple hosts at once.

ssh-exkeys    Exchanges SSH public keys between hosts.

check         Verifies and validates HAWQ settings.

checkperf     Verifies the baseline hardware performance of hosts.

register      Register parquet files generated by other system into the corrsponding table in HAWQ

See 'hawq <command> help' for more information on a specific command.

2、建立資料庫和表

本節通過使用OushuDB的命令列工具psql來說明如何建立基本資料庫物件:database和table。因為OushuDB和PostgreSQL相容,所以使用OushuDB的方式和使用PostgresSQL的方式基本相同,如果OushuDB的文件有些地方說明不清楚的話,使用者也可以通過查閱PostgresSQL的幫助文件來了解更多關於OushuDB的資訊。

下面這條命令使用psql連線OushuDB預設安裝的資料庫postgres,然後建立一個新的資料庫test,並在新的資料庫中建立一個表foo。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

changlei:build ChangLei$ psql -d postgres

psql (8.2.15)

Type "help" for help.

postgres=# create database test;  # 建立資料庫test

CREATE DATABASE

postgres=# \c test  # 連線進入test資料庫

You are now connected to database "test" as user "ChangLei".

test=# create table foo(id int, name varchar);  # 建立表foo

CREATE TABLE

test=# \d  # 顯示當前資料庫test中所有表

           List of relations

Schema | Name | Type  |  Owner   |   Storage

--------+------+-------+----------+-------------

public | foo  | table | ChangLei | append only

(1 row)

test=# insert into foo values(1, 'hawq'),(2, 'hdfs');

INSERT 0 2

test=# select * from foo; # 從表foo中選擇資料

 id | name

----+------

  1 | hawq

  2 | hdfs

(2 rows)

如果想刪除表或者資料庫的話可以使用drop語句。

test=# drop table foo;

DROP TABLE

test=# \d

No relations found.

test=# drop database test;  # 因為現在在test資料庫中,所以不能刪除

ERROR:  cannot drop the currently open database

test=# \c postgres  # 首先連線到postgres資料庫,然後刪除test資料庫

You are now connected to database "postgres" as user "ChangLei".

postgres=# drop database test;

DROP DATABASE


3、檢視查詢執行情況

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

使用\timing命令可以列印出查詢執行的時間。

test=# \timing on

Timing is on.

test=# select * from foo; # 這時再執行SQL語句會給出語句執行時間。

 id | name

----+------

  1 | hawq

  2 | hdfs

(2 rows)

Time: 16.369 ms

test=# \timing off  # 關閉時間輸出

Timing is off.

使用explain語句可以顯示出查詢計劃。

test=# explain select count(*) from foo;

                                    QUERY PLAN

----------------------------------------------------------------------------------

 Aggregate  (cost=1.07..1.08 rows=1 width=8)

   ->  Gather Motion 1:1  (slice1; segments: 1)  (cost=1.03..1.06 rows=1 width=8)

     ->  Aggregate  (cost=1.03..1.04 rows=1 width=8)

           ->  Append-only Scan on foo  (cost=0.00..1.02 rows=2 width=0)

 Settings:  default_hash_table_bucket_number=6

(5 rows)


使用explain analyze可以顯示出查詢在具體執行時的狀態,包括每一個操作符開始執行時間,以及結束時間,可以幫助使用者找到查詢的瓶頸,進而優化查詢。關於查詢計劃以及explain analyze的執行結果的解釋可以參考查詢計劃與查詢執行章節。針對一個查詢,可能會有無數個查詢計劃。得出優化的查詢計劃是查詢優化器的功能。一個查詢執行時間的長短與查詢的計劃有很大關係,所以熟悉查詢計劃以及具體查詢的執行對查詢優化有很大意義。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

test=# explain analyze select count(*) from foo;

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Aggregate  (cost=1.07..1.08 rows=1 width=8)

Rows out:  Avg 1.0 rows x 1 workers.  Max/Last(seg-1:changlei/seg-1:changlei) 1/1 rows with 5.944/5.944 ms to end, start offset by 6.568/6.568 ms.

->  Gather Motion 1:1  (slice1; segments: 1)  (cost=1.03..1.06 rows=1 width=8)

     Rows out:  Avg 1.0 rows x 1 workers at destination.  Max/Last(seg-1:changlei/seg-1:changlei) 1/1 rows with 5.941/5.941 ms to first row, 5.942/5.942 ms to end, start offset by 6.569/6.569 ms.

     ->  Aggregate  (cost=1.03..1.04 rows=1 width=8)

           Rows out:  Avg 1.0 rows x 1 workers.  Max/Last(seg0:changlei/seg0:changlei) 1/1 rows with 5.035/5.035 ms to first row, 5.036/5.036 ms to end, start offset by 7.396/7.396 ms.

           ->  Append-only Scan on foo  (cost=0.00..1.02 rows=2 width=0)

                 Rows out:  Avg 2.0 rows x 1 workers.  Max/Last(seg0:changlei/seg0:changlei) 2/2 rows with 5.011/5.011 ms to first row, 5.032/5.032 ms to end, start offset by 7.397/7.397 ms.

Slice statistics:

 (slice0)    Executor memory: 223K bytes.

 (slice1)    Executor memory: 279K bytes (seg0:changlei).

Statement statistics:

 Memory used: 262144K bytes

Settings:  default_hash_table_bucket_number=6

Dispatcher statistics:

 executors used(total/cached/new connection): (1/1/0); dispatcher time(total/connection/dispatch data): (1.462 ms/0.000 ms/0.029 ms).

 dispatch data time(max/min/avg): (0.029 ms/0.029 ms/0.029 ms); consume executor data time(max/min/avg): (0.012 ms/0.012 ms/0.012 ms); free executor time(max/min/avg): (0.000 ms/0.000 ms/0.000 ms).

Data locality statistics:

 data locality ratio: 1.000; virtual segment number: 1; different host number: 1; virtual segment number per host(avg/min/max): (1/1/1); segment size(avg/min/max): (56.000 B/56 B/56 B); segment size with penalty(avg/min/max): (56.000 B/56 B/56 B); continuity(avg/min/max): (1.000/1.000/1.000); DFS metadatacache: 0.049 ms; resource allocation: 0.612 ms; datalocality calculation: 0.085 ms.

Total runtime: 13.398 ms

(20 rows)



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69957629/viewspace-2843973/,如需轉載,請註明出處,否則將追究法律責任。

相關文章