ผู้ดูแลฐานข้อมูล

ถามตอบสำหรับผู้เชี่ยวชาญด้านฐานข้อมูลที่ต้องการพัฒนาทักษะฐานข้อมูลและเรียนรู้จากผู้อื่นในชุมชน

3
ข้อผิดพลาดขนาดดัชนีสูงสุดของแถว
มีขอบเขตบนสำหรับarrayคอลัมน์หรือไม่? ฉันได้รับข้อผิดพลาดนี้เมื่อแทรกเข้าไปในฟิลด์อาร์เรย์ - PG::Error: ERROR: index row size 3480 exceeds maximum 2712 for index "ix_data" นี่คือคำนิยามตารางของฉัน - create table test_array(id varchar(50), data text[]); ALTER TABLE test_array ADD PRIMARY KEY (id); CREATE INDEX ix_data ON test_array USING GIN (data); ฉันต้องการดัชนีในฟิลด์อาร์เรย์เนื่องจากฉันกำลังทำการค้นหาบางอย่างกับมัน

2
คัดลอกและเปลี่ยนชื่อ db เพื่อให้ฉันสามารถแนบทั้งสองสำเนา
ฉันมี db ที่เรียกว่า 'mysite_db' บนเซิร์ฟเวอร์และฉันได้สร้างสำเนาบนเครื่องของฉันซึ่งก็คือ 'mysite_db' ฉันต้องการแนบ db (จากเครื่องของฉัน) ไปยังเซิร์ฟเวอร์ที่มีชื่อ db นี้อยู่แล้ว หมายความว่าฉันต้องเปลี่ยนชื่อฐานข้อมูลท้องถิ่น (ฉันเดาว่าฉันต้องเปลี่ยนไฟล์จริงด้วย) ฉันหลงทางไปแล้ว คุณช่วยแนะนำฉันได้ไหม เป้าหมายของฉันคือการโหลด 2 ฐานข้อมูลบนเซิร์ฟเวอร์เช่น: 'mysite_db' และ 'myNewSite_db'


4
ลำดับของคอลัมน์ในดัชนี columnstore สำคัญหรือไม่
ฉันมีตารางที่มี ~ 200 ล้านแถวและอีก 15 คอลัมน์ในนั้น ฉันวางแผนที่จะสร้างCOLUMNSTOREดัชนีบนโต๊ะของฉัน จะมีการเปลี่ยนแปลงใด ๆ เกี่ยวกับประสิทธิภาพขึ้นอยู่กับลำดับของคอลัมน์ที่ฉันใช้ในดัชนี columnstore หรือไม่ ถ้าใช่ตรรกะอะไรที่อยู่เบื้องหลัง

1
ทำไม LIKE ถึงเร็วกว่า MATCH ถึง 4 เท่า ... เทียบกับดัชนี FULLTEXT ใน MySQL
ฉันไม่ได้รับสิ่งนี้ ฉันมีตารางที่มีดัชนีเหล่านี้ PRIMARY post_id INDEX topic_id FULLTEXT post_text ตารางมี (เฉพาะ) 346 000 แถว ฉันพยายามที่จะดำเนินการ 2 แบบสอบถาม SELECT post_id FROM phpbb_posts WHERE topic_id = 144017 AND post_id != 155352 AND MATCH(post_text) AGAINST('http://rapidshare.com/files/5494794/photo.rar') ใช้เวลา 4.05 วินาทีในขณะที่ SELECT post_id FROM phpbb_posts WHERE topic_id=144017 AND post_id != 155352 AND post_text LIKE ('%http://rapidshare.com/files/5494794/photo.rar%') ใช้เวลา 0.027 …

1
INDEX บนคีย์หลักคอมโพสิตเป็นอย่างไรใน mysql
เมื่อสร้างคีย์หลักผสมสำหรับคอลัมน์สองคอลัมน์ขึ้นไปเช่นPRIMARY KEY(col1, col2, col3); ระบบจะINDEXแต่ละคอลัมน์แยกกันไหม เหตุผลที่ฉันถามคำถามนี้คือเมื่อเราใช้UNIQUE INDEX (col1, col2, col3)มันจะทำหน้าที่เป็นINDEXคอลัมน์แรกเท่านั้นและเราจำเป็นต้องสร้างINDEXคอลัมน์เพิ่มเติมสำหรับคอลัมน์อื่น ๆ ฉันต้องการทราบว่าเป็นกรณีสำหรับคีย์หลักคอมโพสิตด้วยหรือไม่

1
ฉันควรตีความ "ล็อคเวลา" ในบันทึกแบบสอบถามช้า mysql ได้อย่างไร
ฉันพยายามที่จะเข้าใจวิธีการตีความเวลาล็อคที่ดีที่สุดสำหรับการค้นหาที่ปรากฏในบันทึกการสืบค้นช้า MySQL ของเรา เช่นถ้าแบบสอบถาม UPDATE มีเวลาล็อค 10 วินาที ฉันคิดว่ามันเป็นเวลารวมหลังจากแบบสอบถามการอัพเดทเพื่อรับล็อค แม้ว่ากำลังรอให้คิวรีแบบเลือกก่อนหน้านี้เสร็จสมบูรณ์ แต่ไม่ได้ดำเนินการกับการกระทำ UPDATE ตัวเองนาฬิกาควรจะถูกทำเครื่องหมายเนื่องจากมันกำลังล็อคคิวรี SELECT ทั้งหมดที่เรียงกันหลังจากคิวรี UPDATE และวิธีการเกี่ยวกับการเลือกแบบสอบถามล็อค ทำไมแบบสอบถามที่เลือกบางรายการจึงมีเวลาล็อค เป็นเพราะมีคิวรี่ UPDATE ติดตามดังนั้นพวกเขาจะล็อคตารางด้วยกัน
12 mysql  locking 

1
แนวปฏิบัติที่ดีที่สุดในปัจจุบันเกี่ยวกับการปรับขนาด varchar ใน SQL Server คืออะไร
ฉันพยายามเข้าใจวิธีที่ดีที่สุดในการตัดสินใจว่าคอลัมน์ varchar ขนาดใหญ่ควรเป็นอย่างไรทั้งจากมุมมองการจัดเก็บและประสิทธิภาพ ประสิทธิภาพ จากการวิจัยของฉันดูเหมือนว่าควรใช้ varchar (สูงสุด) เฉพาะในกรณีที่คุณต้องการเท่านั้น นั่นคือถ้าคอลัมน์จะต้องรองรับมากกว่า 8000 ตัวอักษรเหตุผลหนึ่งคือการขาดการจัดทำดัชนี (แม้ว่าฉันน่าสงสัยเล็กน้อยของการจัดทำดัชนีในเขตข้อมูล varchar โดยทั่วไปฉันค่อนข้างใหม่กับหลักการ DB แม้ว่าอาจจะไม่มีมูลเลย ) และการบีบอัด (ยิ่งกังวลเรื่องพื้นที่เก็บข้อมูล) ในความเป็นจริงแล้วคนทั่วไปดูเหมือนจะแนะนำให้ใช้เฉพาะสิ่งที่คุณต้องการเมื่อทำ varchar (n) .... การ oversize ไม่ดีเพราะการสืบค้นจะต้องคำนึงถึงขนาดสูงสุด แต่ก็มีการระบุด้วยว่าเครื่องยนต์จะใช้ขนาดครึ่งหนึ่งที่ระบุไว้เป็นค่าประมาณขนาดเฉลี่ยจริงของข้อมูล นี่หมายความว่าเราควรกำหนดจากข้อมูลว่าขนาดเฉลี่ยคืออะไรเพิ่มขนาดเป็นสองเท่าและใช้เป็น n สำหรับข้อมูลที่มีค่าความแปรปรวนต่ำมาก แต่ไม่เป็นศูนย์ นี่หมายถึงการขยายขนาดเกินขนาดสูงสุด 2 เท่าซึ่งดูเหมือนจะมาก แต่อาจไม่ใช่หรือ ข้อมูลเชิงลึกจะได้รับการชื่นชม ที่เก็บข้อมูล หลังจากอ่านเกี่ยวกับวิธีการทำงานของหน่วยเก็บข้อมูลแบบ in-row และ out-of-row และโปรดทราบว่าการจัดเก็บข้อมูลจริงนั้น จำกัด อยู่ที่ข้อมูลจริงฉันคิดว่าตัวเลือกของ n นั้นมีพื้นที่เก็บข้อมูลน้อยมากหรือไม่มีเลย ทำให้แน่ใจว่ามันใหญ่พอที่จะเก็บทุกอย่างไว้ได้) แม้แต่การใช้ varchar (สูงสุด) …

1
ความแตกต่างระหว่างการค้นหาคำกริยาและคำกริยา
ฉันพยายามปรับแต่งคำถามที่เรามีใน SQL Server 2014 Enterprise ฉันได้เปิดแผนแบบสอบถามจริงใน SQL Sentry Plan Explorer และฉันสามารถดูบนโหนดเดียวว่ามีSeek PredicateและPredicate ข้อแตกต่างระหว่างSeek PredicateและPredicateคืออะไร หมายเหตุ: ฉันสามารถเห็นได้ว่ามีปัญหามากมายกับโหนดนี้ (เช่นแถวโดยประมาณ vs จริง, IO ที่เหลือ) แต่คำถามไม่เกี่ยวข้องกับสิ่งใด ๆ

1
postgres - pg_dump และ pg_restore ที่ไม่มีบทบาท
ฉันพยายามกู้คืนดัมพ์โดยไม่มีบทบาทที่เหมาะสมในฐานข้อมูลการรับ ดังที่กล่าวไว้ที่นี่แต่ที่นี่คุณต้องมี--no-ownerตัวเลือกไม่ว่าจะในpg_dumpหรือpg_restoreหรือทั้งสองอย่าง ฉันใช้บรรทัดคำสั่งต่อไปนี้เพื่อสร้างการถ่ายโอนข้อมูลของฉัน "C:\Program Files\PostgreSQL\9.3\bin\pg_dump.exe" --no-owner -Ft --dbname=postgresql://avo******:AV0******?@127.0.0.1:5432/BI_DB > K:\BI\backup\sort\bck_%timestamp%.tar บรรทัดการกู้คืนมีดังนี้ "C:\Program Files\PostgreSQL\9.3\bin\pg_restore.exe" --host localhost --port 5432 --username "postgres" --dbname "BI_TEST2" --no-password --no-owner --role=postgres --exit-on-error --verbose "D:\D\avo\backup\bck_04042017_1410.tar" อย่างที่คุณเห็นทั้งสองมี--no-ownerตัวเลือก แต่ในที่สุดฉันมีข้อผิดพลาดด้านล่าง สิ่งที่เลวร้ายมากที่ทำให้ฉันเป็นบันทึกด้านล่าง pg_restore: [programme d'archivage (db)] Erreur pendant le traitement de la TOC (« PROCESSING TOC ») : pg_restore: [programme d'archivage (db)] …

3
วิธีเพิ่มข้อ จำกัด เริ่มต้นขณะสร้างตาราง SQL Server [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับผู้ดูแลฐานข้อมูล Exchange Exchange ปิดให้บริการใน3 ปีที่ผ่านมา ฉันพยายามสร้างตารางใหม่ที่มีคอลัมน์ตามด้วยข้อ จำกัด ดังที่แสดงด้านล่าง Create tblTest( columns.. .. .. Gender int, Constraint DF_tblTest_Gender Default 3 For Gender, .. .. .. ) อย่างไรก็ตามฉันได้รับข้อความแสดงข้อผิดพลาดใกล้กับข้อ จำกัด เริ่มต้นว่า 'ใกล้ไวยากรณ์ที่ไม่ถูกต้อง' สำหรับ ''

3
ค้นหาวัตถุที่เชื่อมโยงกับบทบาท PostgreSQL
บางครั้งฉันสร้างผู้ใช้ PostgreSQL ชื่อuser1 (PostgreSQL 9.4.9) ฉันต้องการจะลบผู้ใช้รายนี้ ดังนั้นฉันจะยกเลิกการอนุญาตทั้งหมดในตารางลำดับฟังก์ชันสิทธิ์เริ่มต้นและความเป็นเจ้าของด้วย: ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON SEQUENCES FROM user1; ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON TABLES FROM user1; ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON FUNCTIONS FROM user1; REVOKE ALL ON ALL SEQUENCES IN SCHEMA …

4
แสดงรายการงานตารางเวลาและชุดข้อมูลการเรียกใช้ที่กำหนดเวลาไว้ถัดไป
แสดงรายการงานตารางเวลาและชุดข้อมูลการเรียกใช้ที่กำหนดเวลาไว้ถัดไป ฉันกำลังพยายามแสดงรายการงานตารางเวลาและกำหนดการเรียกใช้ชุดข้อมูลต่อไป อย่างไรก็ตามฉันดูเหมือนจะไม่ประสบความสำเร็จ sysjobactivity มี next_scheduled_run_date ซึ่งเป็นสิ่งที่ฉันต้องการ แต่ฉันไม่สามารถคิดออกเพื่อเชื่อมต่อกับทั้งงานและกำหนดการ หากมีวิธีอื่นนอกเหนือจากผ่านsysjobactivityโปรดแนะนำฉันไปที่นั่น SELECT sj.name AS jobName , ss.name AS scheduleName , sja.next_scheduled_run_date FROM msdb.dbo.sysjobs sj INNER JOIN msdb.dbo.sysjobactivity sja ON sja.job_id = sj.job_id INNER JOIN msdb.dbo.sysjobschedules sjs ON sjs.job_id = sja.job_id INNER JOIN msdb.dbo.sysschedules ss ON ss.schedule_id = sjs.schedule_id WHERE (sj.name LIKE 'xray%') …

2
ลบออกจากแถวของตารางที่ใด ๆ ของเขตข้อมูลคอลัมน์เป็นโมฆะ
มีวิธีการลบแถวออกจากตารางที่ใด ๆ ของเขตข้อมูลคอลัมน์เป็นโมฆะโดยไม่ระบุชัดเจนว่าคอลัมน์ใดเป็นโมฆะ? ฉันใช้ postgreSQL นี่คือสคีสัมพันธ์ของฉัน: Column | Type | Modifiers --------------+---------+---------------------------------------------------------------------- id | integer | not null default nextval('aurostat.visitor_center_id_seq'::regclass) date | date | persons | integer | two_wheelers | integer | cars | integer | vans | integer | buses | integer | autos | integer | ขอบคุณ
12 postgresql 

3
แปลงค่าตัวเลขสตริงด้วยเครื่องหมายจุลภาคเป็นตัวคั่นทศนิยมเป็น NUMERIC (10, 2)
ฉันมีตาราง SQL ของคอลัมน์ varchar ซึ่งมีตัวเลขที่จัดรูปแบบกรีก (. เป็นตัวคั่นหลักพันและเครื่องหมายจุลภาคเป็นตัวคั่นทศนิยม) การแปลงแบบคลาสสิก CONVERT(numeric(10,2),REPLACE([value],',','.')) ไม่ทำงานเพราะ (ตัวคั่นหลักพัน) ฆ่าการแปลง เช่นลอง CONVERT(numeric(10,2),REPLACE('7.000,45',',','.')) ฉันต้องการแปลงค่าดังกล่าวเป็นตัวเลข (10,2) ข้อเสนอแนะใด ๆ ของวิธีการจัดการมันได้หรือไม่

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