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

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

1
การลบอายุอัตโนมัติ (ลบ) ของบันทึกเก่า ๆ ใน Postgres
Postgres มีคุณสมบัติใด ๆ เพื่อรองรับระเบียนเก่าที่ล้าสมัยหรือไม่? ฉันต้องการใช้ Postgres สำหรับบันทึกเป็นคิวซึ่งบันทึก (เหตุการณ์บันทึก) ที่เก่ากว่าสองสัปดาห์ถูกลบโดยอัตโนมัติ

2
โทรไปยังฟังก์ชั่นเดียวกันพร้อมกัน: เกิดการชะงักงันได้อย่างไร
ฟังก์ชั่นของฉันnew_customerถูกเรียกหลายครั้งต่อวินาที (แต่เพียงครั้งเดียวต่อเซสชัน) โดยเว็บแอปพลิเคชัน สิ่งแรกที่มันทำคือล็อคcustomerตาราง (เพื่อทำการ 'แทรกถ้าไม่มี' - ตัวแปรง่าย ๆ ของupsert) ความเข้าใจของฉันเกี่ยวกับเอกสารก็คือการโทรอื่น ๆnew_customerควรเพียงแค่รอจนกว่าการโทรก่อนหน้านี้ทั้งหมดจะเสร็จสิ้น: LOCK TABLE จะได้รับการล็อคระดับโต๊ะโดยรอถ้าจำเป็นเพื่อให้การปลดล็อกที่มีข้อขัดแย้งเกิดขึ้น ทำไมบางครั้งมันถึงตายแทน ความหมาย: create function new_customer(secret bytea) returns integer language sql security definer set search_path = postgres,pg_temp as $$ lock customer in exclusive mode; -- with w as ( insert into customer(customer_secret,customer_read_secret) select secret,decode(md5(encode(secret, 'hex')),'hex') where …

2
หลีกเลี่ยงการละเมิดที่ไม่ซ้ำกันในการทำธุรกรรมอะตอม
เป็นไปได้ในการสร้างธุรกรรมอะตอมมิกใน PostgreSQL? พิจารณาฉันมีหมวดหมู่ตารางที่มีแถวเหล่านี้: id|name --|--------- 1 |'tablets' 2 |'phones' และชื่อคอลัมน์มีข้อ จำกัด ที่ไม่ซ้ำกัน ถ้าฉันลอง: BEGIN; update "category" set name = 'phones' where id = 1; update "category" set name = 'tablets' where id = 2; COMMIT; ฉันได้รับ: ERROR: duplicate key value violates unique constraint "category_name_key" DETAIL: Key (name)=(tablets) already exists.

2
สิทธิพิเศษสำหรับเจ้าของฐานข้อมูล ผู้ใช้แอปพลิเคชัน
รุ่นด่วน: ฉันควรใช้คำสั่งใดเพื่อให้เจ้าของฐานข้อมูลอนุญาตให้เข้าถึงตารางในฐานข้อมูลนี้และสามารถทำได้จากบัญชีของเจ้าของรายนั้น รุ่นที่ยาวกว่า: ฉันกำลังสร้างฐานข้อมูลบน RDS ฉันมีผู้ใช้ 'รูท' ที่ฉันกำหนดค่าไว้กับ Amazon Amazon สร้างบทบาทกลุ่ม 'rds_superuser' โดยอัตโนมัติซึ่งมีสิทธิพิเศษมาก แต่ไม่ใช่ superuser จริง ๆ ฉันกำลังสร้างฐานข้อมูลและผู้ใช้สำหรับแอปพลิเคชันดังต่อไปนี้: create database master_integration; CREATE ROLE master_application LOGIN ENCRYPTED PASSWORD '...' VALID UNTIL 'infinity'; GRANT ALL ON DATABASE master_integration TO GROUP rds_superuser WITH GRANT OPTION; GRANT ALL ON DATABASE master_integration TO GROUP master_application; …

3
ดัชนีสำหรับเคียวรี SQL ที่มีเงื่อนไข WHERE และ GROUP BY
ฉันพยายามที่จะกำหนดดัชนีที่จะใช้สำหรับแบบสอบถาม SQL ที่มีWHEREเงื่อนไขและGROUP BYที่กำลังทำงานช้ามาก คำค้นหาของฉัน: SELECT group_id FROM counter WHERE ts between timestamp '2014-03-02 00:00:00.0' and timestamp '2014-03-05 12:00:00.0' GROUP BY group_id ปัจจุบันตารางมี 32.000.000 แถว เวลาดำเนินการของแบบสอบถามเพิ่มขึ้นมากเมื่อฉันเพิ่มกรอบเวลา ตารางที่สงสัยจะเป็นดังนี้: CREATE TABLE counter ( id bigserial PRIMARY KEY , ts timestamp NOT NULL , group_id bigint NOT NULL ); ขณะนี้ฉันมีดัชนีต่อไปนี้ แต่ประสิทธิภาพยังคงช้า: CREATE INDEX …

3
โอนย้ายฐานข้อมูล heroku ไปยัง Amazon RDS ด้วยเวลาหยุดทำงานขั้นต่ำ
ฉันมีฐานข้อมูล heroku postgres และต้องการย้ายไปยัง Amazon RDS เพื่อประหยัดค่าใช้จ่าย จะทำอย่างไรกับการหยุดทำงานขั้นต่ำ โดยปกติแล้วสิ่งนี้จะเกี่ยวข้องกับการจำลองฐานข้อมูลแบบเรียลไทม์จากนั้นจึงส่งเสริมฐานข้อมูลที่จำลองแบบแล้วเป็นฐานข้อมูลหลัก ฉันรู้ว่าฉันสามารถใช้ฐานข้อมูลผู้ติดตามเพื่อย้ายฐานข้อมูลภายใน heroku และฉันสามารถใช้ฐานข้อมูลแบบจำลองการอ่านเพื่อย้ายฐานข้อมูลภายใน Amazon RDS มีวิธีการคล้ายกันในการสร้างการจำลองแบบฐานข้อมูลของ heroku DB ที่อาศัยอยู่ใน Amazon RDS ของฉันเองหรือไม่?

1
เหตุใดจึงไม่มีประเภทจำนวนเต็มที่ไม่ได้ลงชื่อในแพลตฟอร์มฐานข้อมูลด้านบน
ฐานข้อมูลมักจะปรับแต่งได้มากด้วยชนิดข้อมูลที่แตกต่างกันและความยาวที่กำหนดเอง มันทำให้ฉันประหลาดใจเนื่องจากฉันพยายามค้นหาไวยากรณ์เพื่อใช้unsigned intชนิดที่ไม่สามารถใช้ได้จากทั้ง PostgreSQL และ MS SQL Server MySQL และ Oracle ดูเหมือนจะ ดูเหมือนว่าการละเลยที่เห็นได้ชัดในส่วนของพวกเขา - ตัวเลือก perfomant ที่ดีที่สุดถัดไปคือ long / bigint, (จำนวนเต็ม 8 ไบต์) แต่อาจไม่จำเป็นอย่างสมบูรณ์! ไม่มีใครรู้ว่าทำไมพวกเขาถึงเลือกที่จะไม่รวมการสนับสนุน int แบบไม่ได้ลงนาม?


2
วิธีการใช้การเชื่อมต่อร่วมกันที่ดีที่สุดใน SQLAlchemy สำหรับการรวมธุรกรรมระดับ PgBouncer?
ใช้ SQLAlchemy เพื่อสืบค้นฐานข้อมูล PostgreSQL ที่อยู่เบื้องหลัง PgBouncer โดยใช้การรวมกำไรระดับธุรกรรม รูปแบบที่ดีที่สุดที่จะใช้สำหรับการตั้งค่าประเภทนี้คืออะไร ฉันควรมีหนึ่งเครื่องยนต์ต่อกระบวนการใช้ConnectionPoolหรือฉันควรสร้างเครื่องยนต์ตามคำขอและใช้NullPoolสำหรับแต่ละเครื่องยนต์หรือไม่ มีรูปแบบที่แตกต่างกันโดยสิ้นเชิงที่ฉันควรใช้หรือไม่ ขอบคุณมาก ๆ! แจ้งให้เราทราบหากต้องการข้อมูลเพิ่มเติมและฉันจะอัปเดตโดยเร็ว

4
ฉันควร VACUUM ฐานข้อมูล PostgreSQL ของฉันด้วยตนเองหรือไม่หากเปิดเครื่องอัตโนมัติ
ฉันใช้ซอฟต์แวร์ที่สร้างฐานข้อมูล PostgreSQL ขนาดใหญ่ (มีตารางหนึ่งล้านแถว) และผู้พัฒนาบอกว่าฉันควรทำVACUUMและควรทำเป็นANALYZEระยะ แต่ฐานข้อมูล PostgreSQL จะถูกautovacuumเปิดใช้งาน ฉันควรดูดฝุ่น / วิเคราะห์เลยหรือไม่? ประโยชน์คืออะไร ความแตกต่างระหว่างสูญญากาศอัตโนมัติและแมนนวลคืออะไร ตัวอย่างเช่นใน Pgadmin3 ฉันมีสิ่งนี้:

1
ทางเลือกของวิธีการรับรองความถูกต้องสำหรับแอพทางการเงินใน PostgreSQL
ก่อนอื่นให้พื้นหลัง โครงการ LedgerSMB เป็นโครงการซอฟต์แวร์บัญชีการเงินที่ทำงานบน PostgreSQL เราใช้ตรรกะทางธุรกิจจำนวนมากในฟังก์ชั่นที่ผู้ใช้กำหนดซึ่งทำหน้าที่เป็นเครื่องมือการแมปหลักระหว่างวิธีการวัตถุของโปรแกรมและพฤติกรรมฐานข้อมูล ขณะนี้เราใช้ผู้ใช้ฐานข้อมูลเป็นผู้ใช้การพิสูจน์ตัวตนส่วนหนึ่งเป็นตัวเลือก (สิ่งนี้อนุญาตให้ตรรกะความปลอดภัยส่วนกลางเพื่อให้เครื่องมืออื่น ๆ สามารถเขียนและใช้สิทธิ์ที่ให้แก่ผู้ใช้) และอีกส่วนตามความจำเป็น (หลังจากเราแยกจาก SQL-Ledger ไม่มีตัวเลือกมากมายสำหรับการปรับเปลี่ยนการรักษาความปลอดภัยไปยัง codebase นั้น) วิธีนี้ทำให้เราสามารถเข้าถึงตัวเลือกการลงชื่อเข้าใช้เพียงครั้งเดียวที่ PostgreSQL สามารถเข้าถึงได้ตั้งแต่ LDAP ไปจนถึง Kerberos 5. เราสามารถใช้ PAM ที่เกี่ยวข้องกับรหัสผ่าน นอกจากนี้ยังช่วยให้เราสามารถใช้สิทธิ์อีกครั้งเมื่อรวมกับแอปพลิเคชันอื่นหรืออนุญาตให้ส่วนต่อประสานลูกค้าอื่น ๆ สำหรับแอปพลิเคชันการบัญชีการเงินดูเหมือนว่าจะชนะสุทธิ มีค่าใช้จ่ายที่เกี่ยวข้องอย่างชัดเจน สำหรับเว็บแอปพลิเคชันเรา จำกัด ประเภท http auth ที่สามารถรองรับได้มาก ตัวอย่างเช่น DIGEST นั้นหมดไปแล้ว การทำงานพื้นฐานและเราสามารถใช้ KRB5 ได้ง่ายพอ (ฉันวางแผนว่าจะให้การสนับสนุนและทำงานนอกกรอบสำหรับ 1.4) มาตรการการรับรองความถูกต้องที่แข็งแกร่งมากไม่สามารถจัดการได้อย่างถูกต้องโดยตรงแม้ว่าเราอาจจะสามารถกำหนดมาตรการเหล่านี้ได้ในกรณีที่จำเป็น (ตัวอย่างเช่นใบรับรอง SSL BASIC + ฝั่งไคลเอ็นต์ที่มี …

3
PostgreSQL เทียบกับ MySQL: การเปรียบเทียบคุณสมบัติเชิงพื้นที่
เรากำลังอยู่ระหว่างการสร้างเว็บแอปพลิเคชันที่มีองค์ประกอบข้อมูลเชิงพื้นที่ ในการเริ่มต้นการเปรียบเทียบข้อมูลเชิงพื้นที่ของเราจะใช้จุดที่กำหนดและกลับมาจับคู่รูปหลายเหลี่ยมเชิงพื้นที่ที่ทับซ้อนกัน ดังที่กล่าวไปแล้วฐานข้อมูลของเรามีส่วนประกอบอื่น ๆ มากมายซึ่งรวมถึงสิ่งทั่วไปที่คุณจะพบในฐานข้อมูลเชิงสัมพันธ์ทั่วไปของคุณ เราอยู่ในจุดที่โครงการของเราต้องเลือกโซลูชันฐานข้อมูลที่จะใช้ สมาชิกโครงการทุกคนมีความคุ้นเคยกับการใช้และการบริหารจัดการของ MySQL มากขึ้น แต่งานวิจัยทั้งหมดชี้ให้เห็นว่า PostgreSQL เป็นทางออกที่ดีกว่าโดยเฉพาะอย่างยิ่งในเรื่องข้อมูลเชิงพื้นที่โดยใช้ postGIS เราคาดหวัง (ความหวัง) แอปพลิเคชันของเราจะได้สัมผัสกับการกระทำมากมายกับผู้ใช้จำนวนมาก ใครบ้างที่มีประสบการณ์การใช้ MySQL เป็น RDBMS ของพวกเขาที่มีองค์ประกอบข้อมูลเชิงพื้นที่มีคำแนะนำ / ประสบการณ์ระยะยาวหรือไม่? มีข้อเสียของการใช้ PostGIS ยกเว้นความคุ้นเคยหรือไม่?

5
PostgreSQL: การเริ่มต้นของคลัสเตอร์ฐานข้อมูลล้มเหลว
ทั้งสองC:\PostgreSQLและC:\PostgreSQL\dataมีpostgresผู้ใช้ที่มีสิทธิ์เข้าถึงแบบเต็มและสิทธิ์ผู้ดูแลระบบ ฉันรัน postgresql-9.1.2-1-windows.exe จากผู้ใช้ postgres ในฐานะผู้ดูแลระบบ เป้าC:\PostgreSQL ทุกวิธีที่ฉันลองฉันจะได้รับ "การเริ่มต้นคลัสเตอร์ฐานข้อมูลล้มเหลว" คำถาม มันจะโอเคไหมที่จะเรียกใช้ทุกอย่างที่ไม่มีบริการ Windows มีการแก้ไขการติดตั้งเป็นบริการของ Windows หรือไม่ ฉันกำลังพยายามตั้งค่า PostGIS ให้ทำงานกับ GeoDjango ฉันสามารถติดตั้ง PostGIS ได้ด้วยตนเอง ใหม่สำหรับ PostgreSQL และฉันมีวิกฤตของความเชื่อมั่นทั้งหมดนี้ มาจาก MySQL ถึง PostgreSQL เป็นครั้งแรก เอาต์พุตบันทึกที่เกี่ยวข้องจาก C: \ Users \ Larry \ AppData \ Local \ Temp \ install-postgresql.log: WScript.Network initialized... Called IsVistaOrNewer()... 'winmgmts' object …

1
ค่าใช้จ่ายสำหรับ varchar (n) คืออะไร?
ฉันต้องการถามถึงความหมายของส่วนนี้จากPostgres docเกี่ยวกับvarchar(n)ประเภท: ความต้องการพื้นที่เก็บข้อมูลสำหรับสตริงสั้น (สูงสุด 126 ไบต์) คือ 1 ไบต์บวกกับสตริงจริงซึ่งรวมถึงการเว้นวรรคเว้นวรรคในกรณีของอักขระ สตริงที่ยาวกว่ามี 4 ไบต์ของค่าใช้จ่ายแทน 1 สมมติว่าฉันมีvarchar(255)ทุ่งนา และตอนนี้คำสั่งต่อไปนี้: หากฟิลด์นี้มีสตริง 10 ไบต์ค่าใช้จ่ายอยู่ที่ 1 ไบต์ ดังนั้นสตริงจะใช้ 11 ไบต์ ถ้าเขตข้อมูลถือสตริงที่ใช้ 140 ไบต์ค่าใช้จ่ายอยู่ที่ 4 ไบต์ ดังนั้นสตริงจะใช้ 144 ไบต์ ข้อความข้างต้นเป็นจริงหรือไม่? ที่นี่มีคนเข้าใจเอกสารเช่นเดียวกับผม แต่ที่นี่มีคนระบุค่าใช้จ่ายอยู่เสมอ 4 ไบต์ที่นี่ ?

1
ดัชนีไม่ได้ใช้กับ `= any () 'แต่ใช้กับ` in'
ตารางtมีสองดัชนี: create table t (a int, b int); create type int_pair as (a int, b int); create index t_row_idx on t (((a,b)::int_pair)); create index t_a_b_idx on t (a,b); insert into t (a,b) select i, i from generate_series(1, 100000) g(i) ; ไม่มีการใช้ดัชนีกับanyผู้ประกอบการ: explain analyze select * from t where (a,b) = …

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