0
我可以成功創建PostgreSQL數據庫的虛擬硬盤。無法創建Postgresql數據庫
該命令是成功的:
psql --host=localhost --command "CREATE TABLESPACE $db_tblspace LOCATION '$dbPath';"
其中DBPATH是ramdisk上的目錄。
這裏:
createdb $dbName --tablespace=$db_tblspace --host=localhost --no-password --echo
我得到這個錯誤:
CREATE DATABASE pgdb TABLESPACE pgdb_tblspace;
createdb: database creation failed: ERROR: could not write to file "pg_tblspc/24597/PG_9.2_201204301/24598/12027": No space left on device
我無法理解這樣的錯誤。虛擬磁盤剛剛創建,它是空的,其大小爲50 MB。新創建的數據庫也是空的。爲什麼消息「設備上沒有空間」?
謝謝。
你說服了我,特別是考慮到只有某些表應該放在ramdisk上。如果我使用UNLOGGED或TEMPORARY表,我能確定他們不會碰SSD嗎?我想防止將它用於臨時數據,這些數據會被每秒多次覆蓋。 – Pietro
@Pietro所以你最關心的是SSD的磨損?如果是這樣,你不僅要考慮表格本身,還要考慮預寫日誌。 'unlogged'或'temporary'表格大多會避免WAL,所以這很有幫助。如果使用未記錄/臨時表,您仍然可以獲得磁盤寫入,但不會「每秒多次」,因爲沒有任何操作會強制它們刷新到磁盤。操作系統會將它們緩衝在RAM中,並且只有在內存壓力強制它們時才寫出來,特別是當你在'postgresql.conf'中設置'fsync = off'時。所有這些選項都可以讓PostgreSQL在數據丟失或服務器崩潰時丟棄數據(數據丟失)。 –
Craig,我錯了,或者我可以用我的需求創建一個表的唯一方法是限制在這個表中:CREATE TEMPORARY TABLE table_name(...)'?其他一切似乎都與整個數據庫相關,而不是表格。 – Pietro