คำถามติดแท็ก postgresql

PostgreSQL ทุกรุ่น เพิ่มแท็กเฉพาะรุ่นเพิ่มเติมเช่น postgresql-11 หากบริบทนั้นสำคัญ

2
วิธีรับคอลัมน์เวลาประทับในเวลามิลลิวินาทีเท่านั้นจาก PostgreSQL
ฉันมีคอลัมน์ "สร้าง" พร้อมพิมพ์timestamp without time zone default now()ในฐานข้อมูล PostgreSQL ถ้าฉันเลือก colums มันมีรูปแบบที่ดีและอ่านได้ตามค่าเริ่มต้น: SELECT created FROM mytable; created --------------------------- 2011-05-17 10:40:28.876944 แต่ฉันต้องการได้รับการประทับเวลาในมิลลิวินาทีเท่านั้น (นาน) บางสิ่งเช่นนี้ SELECT myformat (สร้าง) จาก mytable; created ----------------- 2432432343876944 ฉันจะรับคอลัมน์การประทับเวลาได้เพียงมิลลิวินาทีจาก PostgreSQL ได้อย่างไร การตอบสนองต่อแจ็ค: ฉันจะได้รับความแตกต่างเช่นเดียวกับคุณ (-3600) แต่ถ้าผมใช้timestamp with time zoneผมจะเห็นว่า "ความผิดพลาด" หรือแตกต่างกันเป็นเพราะ '1970/01/01' +01ได้รับโซนเวลา create table my_table_2(created timestamp with …

4
ดัชนีเชิงพื้นที่สามารถช่วยแบบสอบถามแบบ "ช่วง - เรียงตาม - ขีด จำกัด "
ถามคำถามนี้โดยเฉพาะสำหรับ Postgres เนื่องจากมี supoort ที่ดีสำหรับดัชนี R-tree / spatial เรามีตารางต่อไปนี้พร้อมโครงสร้างแบบต้นไม้ (ชุดแบบซ้อน) ของคำและความถี่: lexikon ------- _id integer PRIMARY KEY word text frequency integer lset integer UNIQUE KEY rset integer UNIQUE KEY และแบบสอบถาม: SELECT word FROM lexikon WHERE lset BETWEEN @Low AND @High ORDER BY frequency DESC LIMIT @N ฉันคิดว่าดัชนีการครอบคลุม(lset, frequency, word)จะมีประโยชน์ แต่ฉันรู้สึกว่ามันอาจทำงานได้ไม่ดีหากมีlsetค่ามากเกินไปใน(@High, …

2
บังคับให้ไคลเอนต์ PostgreSQL ใช้ SSL หรือไม่
ฉันได้กำหนดค่าssl = onในpostgresql.conf(และติดตั้งใบรับรองเป็นต้น) สิ่งนี้ทำให้มั่นใจได้หรือไม่ว่าลูกค้าทั้งหมดจะเชื่อมต่อผ่าน SSL เสมอ ( ssl = onนั่นคือมันเป็นไปไม่ได้ที่จะเชื่อมต่อโดยไม่มีการเข้ารหัส SSL หรือไม่) มีวิธีอื่น ๆ เพื่อให้แน่ใจว่าลูกค้าทั้งหมดเชื่อมต่อผ่าน SSL / TLS หรือไม่ ขอแสดงความนับถือ KajMagnus
29 postgresql 

1
JSONB พร้อมการจัดทำดัชนี vs. hstore
ฉันกำลังพยายามตัดสินใจเกี่ยวกับการออกแบบฐานข้อมูลโดยมีข้อสมมติฐานน้อยที่สุด (เกี่ยวกับวิธีที่แอพพลิเคชั่นบนเว็บพัฒนาขึ้น) ในขั้นตอนนี้ เป็นขั้นตอนแรกการทำความเข้าใจว่าการเข้าร่วมนั้นมีราคาแพงฉันกำลังพิจารณาตารางเสาหินจำนวนน้อยเมื่อเทียบกับตารางขนาดเล็กจำนวนมากปกติ เป็นจุดที่สองฉันสับสนระหว่างการใช้ hstore กับตารางปกติเทียบกับ JSONB (ด้วยการทำดัชนี GiST) AFAIK (โปรดแก้ไขให้ถูกต้อง): โดยทั่วไปใน Postgres hstore จะทำงานได้ดีกว่าประเภทข้อมูลอื่น งานนำเสนอจาก FOSDEM PGDAY มีสถิติที่น่าสนใจ (ในช่วงครึ่งหลังของสไลด์) https://wiki.postgresql.org/images/b/b4/Pg-as-nosql-pgday-fosdem-2013.pdf ข้อได้เปรียบของ hstore คือการสร้างดัชนีอย่างรวดเร็ว (GiN หรือ GiST) อย่างไรก็ตามด้วยการทำดัชนี JSONB, GiN และ GiST สามารถนำไปใช้กับข้อมูล JSON ได้ บล็อกนี้จากมืออาชีพที่ 2 Quadrant กล่าวว่า "ณ จุดนี้อาจคุ้มค่าที่จะแทนที่การใช้ hstore ด้วย jsonb ในแอปพลิเคชันใหม่ทั้งหมด" (เลื่อนไปยังจุดสิ้นสุด): http://blog.2ndquadrant.com/postgresql-anti-patterns-unn Essential -jsonhstore …

2
วิธีจัดการกับแผนแบบสอบถามที่ไม่ดีที่เกิดจากความเท่าเทียมกันที่แน่นอนในประเภทช่วง?
ฉันกำลังอัปเดตโดยที่ฉันต้องการความเท่าเทียมกันแน่นอนในtstzrangeตัวแปร แถว ~ 1M มีการแก้ไขและแบบสอบถามใช้เวลาประมาณ 13 นาที ผลลัพธ์ของEXPLAIN ANALYZEสามารถเห็นได้ที่นี่และผลลัพธ์ที่แท้จริงแตกต่างอย่างมากจากที่ประเมินโดยผู้วางแผนแบบสอบถาม ปัญหาคือการสแกนดัชนีt_rangeคาดว่าจะส่งคืนแถวเดียว สิ่งนี้น่าจะเกี่ยวข้องกับความจริงที่ว่าสถิติของประเภทช่วงนั้นถูกจัดเก็บแตกต่างจากประเภทอื่น ๆ มองไปที่pg_statsมุมมองสำหรับคอลัมน์ที่n_distinctเป็น -1 และสาขาอื่น ๆ (เช่นmost_common_vals, most_common_freqs) เป็นที่ว่างเปล่า อย่างไรก็ตามจะต้องมีสถิติเก็บไว้ในt_rangeบางแห่ง การอัปเดตที่คล้ายกันอย่างยิ่งซึ่งฉันใช้ 'ภายใน' บน t_range แทนที่จะใช้ความเท่าเทียมกันที่แน่นอนใช้เวลาประมาณ 4 นาทีในการดำเนินการและใช้แผนคิวรีที่แตกต่างกันอย่างมาก (ดูที่นี่ ) แผนคิวรีที่สองนั้นสมเหตุสมผลสำหรับฉันเพราะทุกแถวในตาราง temp และส่วนสำคัญของตารางประวัติจะถูกนำมาใช้ t_rangeที่สำคัญกว่าการวางแผนแบบสอบถามคาดการณ์ตัวเลขให้ถูกต้องประมาณแถวสำหรับกรอง การกระจายตัวของt_rangeมันค่อนข้างผิดปกติ ฉันใช้ตารางนี้เพื่อเก็บสถานะทางประวัติศาสตร์ของตารางอื่นและการเปลี่ยนแปลงของตารางอื่น ๆ เกิดขึ้นพร้อมกันในการทิ้งขนาดใหญ่ดังนั้นจึงมีค่าที่แตกต่างกันไม่มากt_rangeนัก นี่คือการนับที่สอดคล้องกับค่าที่ไม่ซ้ำกันของt_range: t_range | count -------------------------------------------------------------------+--------- ["2014-06-12 20:58:21.447478+00","2014-06-27 07:00:00+00") | 994676 ["2014-06-12 20:58:21.447478+00","2014-08-01 01:22:14.621887+00") …

4
ตรวจสอบว่าสองตารางมีเนื้อหาเหมือนกันใน PostgreSQL
สิ่งนี้ถูกถามใน Stack Overflowแล้ว แต่สำหรับ MySQL เท่านั้น ฉันใช้ PostgreSQL แต่น่าเสียดายที่ (และน่าแปลกใจ) PostgreSQL CHECKSUM tableไม่ได้ดูเหมือนจะมีบางอย่างเช่น วิธีการแก้ปัญหา PostgreSQL นั้นใช้ได้ผล แต่วิธีทั่วไปจะดีกว่า ฉันพบhttp://www.besttechtools.com/articles/article/sql-query-to-check-two-tables-have-identical-dataแต่ฉันไม่เข้าใจตรรกะที่ใช้ ความเป็นมา: ฉันเขียนรหัสการสร้างฐานข้อมูลใหม่ดังนั้นฉันต้องตรวจสอบว่ารหัสเก่าและใหม่ให้ผลลัพธ์ที่เหมือนกันหรือไม่

1
แปลงระเบียนคอลัมน์ทั้งหมดเป็นตัวพิมพ์เล็ก
ฉันใช้ PostgreSQL 9.1 และฉันมีตารางผู้ใช้ที่มีloginคอลัมน์ ชื่อล็อกอินเป็นกรณี ๆ ไปเช่น Bob, MikE, john ฉันต้องการแปลงระเบียนทั้งหมดเหล่านี้เป็นตัวพิมพ์เล็ก ฉันจะทำสิ่งนั้นได้อย่างไร

2
วิธีการตัดบรรทัดยาวเมื่อเลือกคอลัมน์ข้อความ SQL?
ฉันกำลังเลือกจากตารางที่มีคอลัมน์ข้อความยาว ๆ ฉันต้องการตัดบรรทัดยาวให้เป็นความยาวบรรทัดสูงสุด จาก: SELECT * FROM test; test_id | text --------+----------------------------------------------------------------------- 1 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris lorem ไปที่: test_id | text --------+----------------------------- 1 | Lorem ipsum dolor sit amet,+ | consectetur adipiscing elit+ | . Mauris lorem
28 postgresql 

1
ฟังก์ชัน Postgres จะกำหนดผลลัพธ์ของแบบสอบถามให้กับตัวแปรหลายตัว
ฉันต้องการกำหนดค่าให้กับตัวแปร 2 ตัวดังต่อไปนี้ในฟังก์ชัน Postgres a := select col1 from tbl where ... b := select col2 from tbl where ... ฉันจะกำหนด 2 ค่าให้กับ 2 ตัวแปรในคำสั่งหนึ่งบรรทัดได้อย่างไร ชอบ a,b := select col1,col2 from tbl where ...

2
ป้องกัน PostgreSQL ไม่ให้เริ่มการบูทใน Ubuntu
ฉันใช้ PostgreSQL 9.2 และทำงานโดยอัตโนมัติเมื่อฉันเริ่มระบบ (Kubuntu) ฉันจะหลีกเลี่ยงสิ่งนี้ได้อย่างไร ฉันต้องเริ่มด้วยตนเองและฉันไม่ต้องการให้เริ่มต้นแบบอัตโนมัติเพราะต้องดูที่คอนโซล

4
การอัพเดตแถวด้วยค่าเดียวกันอัพเดตแถวจริงหรือไม่?
ฉันมีคำถามเกี่ยวกับประสิทธิภาพ สมมติว่าฉันมีผู้ใช้ชื่อ Michael ใช้แบบสอบถามต่อไปนี้: UPDATE users SET first_name = 'Michael' WHERE users.id = 123 แบบสอบถามจะดำเนินการอัปเดตจริงหรือไม่แม้ว่าจะมีการอัปเดตเป็นค่าเดียวกันหรือไม่ ถ้าเป็นเช่นนั้นฉันจะป้องกันไม่ให้เกิดขึ้นได้อย่างไร

2
นามแฝงคอลัมน์อ้างอิงในรายการ SELECT เดียวกัน
ฉันกำลังแปลงระบบเก่าที่ใช้ MS-Access เป็น PostgreSQL ในการเข้าถึงเขตข้อมูลที่สร้างขึ้นใน SELECT สามารถใช้เป็นส่วนหนึ่งของสมการสำหรับเขตข้อมูลในภายหลังเช่นนี้ SELECT samples.id, samples.wet_weight / samples.dry_weight - 1 AS percent_water, 100 * percent_water AS percent_water_100 FROM samples; เมื่อฉันทำเช่นนี้ใน PostgreSQL, Postgres จะพ่นข้อผิดพลาด: ข้อผิดพลาด: ไม่มีคอลัมน์ "percent_water" นี่คือวิธีที่ฉันสามารถแก้ไขได้โดยเลือกจากตัวเลือกย่อย: SELECT s1.id, s1.percent_water, 100 * s1.percent_water AS percent_water_100 FROM ( SELECT samples.id, samples.wet_weight / samples.dry_weight - 1 AS percent_water …

3
อัปเกรดจาก postgres 9.1 เป็น 9.3 บนเซิร์ฟเวอร์ Ubuntu
ฉันมีเซิร์ฟเวอร์ที่ใช้งานจริงของฉัน (Ubuntu 13.10) ที่ทำงานกับ postgresql 9.1 ฉันต้องการใช้คุณสมบัติไม่กี่ข้อที่ 9.3 ดังนั้นจึงต้องการอัพเกรด มีคนช่วยฉันอัปเกรดจาก 9.1 เป็น 9.3 เพื่อให้มีการหยุดทำงานไม่เกิน 30 นาที หรือไม่ก็? ความกังวลหลักคือการป้องกันการสูญเสียข้อมูลหรือความซ้ำซ้อนไฟล์

1
postgresql: ฉันจะถ่ายโอนและกู้คืนบทบาทสำหรับคลัสเตอร์ได้อย่างไร
บทบาทถูกเก็บไว้ในคลัสเตอร์ที่ไหนและฉันจะถ่ายโอนข้อมูลได้อย่างไร ฉันทำ pg_dump ของ db แล้วโหลดลงในคลัสเตอร์อื่น แต่ฉันได้รับข้อผิดพลาดมากมาย: psql:mydump.sql:3621: ERROR: role "myrole" does not exist เห็นได้ชัดว่าการถ่ายโอนข้อมูลของฐานข้อมูลของฉันไม่รวมถึงบทบาท ฉันพยายามทิ้ง db 'postgres' แต่ฉันไม่เห็นบทบาทที่นั่นเช่นกัน ฉันจำเป็นต้องใช้pg_dumpall --roles-onlyหรือไม่ Postgresql รุ่น 8.4.8 และ 9.1.4 ระบบปฏิบัติการ: Ubuntu 11.04 Natty

4
ฉันต้องเรียกใช้ VACUUM FULL โดยไม่มีพื้นที่ว่างในดิสก์
ฉันมีหนึ่งตารางที่ใช้พื้นที่เกือบ 90% ของ hd พื้นที่บนเซิร์ฟเวอร์ของเรา ฉันตัดสินใจที่จะวางคอลัมน์ไม่กี่คอลัมน์เพื่อเพิ่มพื้นที่ว่าง แต่ฉันต้องคืนพื้นที่ไปยังระบบปฏิบัติการ อย่างไรก็ตามปัญหาคือฉันไม่แน่ใจว่าจะเกิดอะไรขึ้นถ้าฉันเรียกใช้ VACUUM FULL และมีพื้นที่ว่างไม่เพียงพอที่จะทำสำเนาของตาราง ฉันเข้าใจว่าไม่ควรใช้สูญญากาศเต็มรูปแบบ แต่ฉันคิดว่านี่เป็นตัวเลือกที่ดีที่สุดในสถานการณ์นี้ ความคิดใด ๆ ที่จะได้รับการชื่นชม ฉันใช้ PostgreSQL 9.0.6

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.