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

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

3
แทรกจำนวนมากลงใน SQL Server จาก VMWare guest โดยใช้สวิตช์แบบกระจาย
นี่น่าจะไม่ใช่ปัญหาเซิร์ฟเวอร์ SQL เป็นส่วนใหญ่ แต่ดูเหมือนว่าการตั้งค่าจะมีผลเฉพาะกับ BULK INSERTS ไปยังเซิร์ฟเวอร์ SQL เท่านั้น เราเพิ่งย้ายฮาร์ดแวร์ VM และแขกทั้งหมดที่ถูกย้ายมีสวิตช์เสมือนของพวกเขาเปลี่ยนจากมาตรฐานเป็นการกระจาย ฉันเริ่มได้รับแล้ว เกิดข้อผิดพลาดร้ายแรงขณะอ่านอินพุตสตรีมจากเครือข่าย เซสชั่นจะถูกยกเลิก (ข้อผิดพลาดการป้อนข้อมูล: 64 ข้อผิดพลาดการส่งออก: 0) บนเซิร์ฟเวอร์ SQL สองเซิร์ฟเวอร์ในระหว่างการดำเนินการ BULK INSERT หนึ่งในเซิร์ฟเวอร์ SQL คือ VM ที่มีการกำหนดค่าใหม่และอีกรายการหนึ่งเป็นเซิร์ฟเวอร์จริง การดำเนินการทั้งสองแทรกเป็นกลุ่มมาจาก VM ด้วยการกำหนดค่าใหม่ ส่วนแทรกจำนวนมากจะไม่ล้มเหลวทุกครั้งมันจะสุ่มมากเมื่อต้องการ เมื่อเราเปลี่ยนสวิตช์เสมือนเป็นสวิตช์มาตรฐานแทนที่จะเป็นสวิตช์แบบกระจายปัญหาจะหายไป ฉันกำลังหาคำอธิบายเพิ่มเติมว่าทำไมมันไม่ทำงานกับสวิตช์แบบกระจายแทนที่จะเป็นความละเอียด ฉันเดาว่าการดำเนินการแทรกเป็นกลุ่มเป็นแบบอนุกรมและด้วยสวิตช์แบบกระจายแพ็คเก็ตจะถูกส่งผ่านโฮสต์ที่แตกต่างกันซึ่งบางอันอาจยุ่งกว่าผู้อื่นและมาถึงเซิร์ฟเวอร์ปลายทางเกินกว่าขีด จำกัด เวลาแฝง (หมายเหตุ: ไม่มีสิ่งใดในบันทึกเหตุการณ์ของ windows ในเวลาที่เกิดข้อผิดพลาดบนเซิร์ฟเวอร์ต้นทางหรือเซิร์ฟเวอร์ปลายทาง) UPDATE: ปัญหานี้เกิดจาก NIC VMs ทั้งหมดของเราได้รับการกำหนดค่าด้วย E1000 NIC ซึ่งทำงานได้ดีพอกับสวิตช์มาตรฐาน …

1
คำนวณ MATCH () เทียบกับ () คะแนนจาก QUERY QUERY ที่ไม่ใช่สำหรับแต่ละตาราง
ฉันพยายามที่จะมีคะแนนสำหรับส่วนทั้งหมดของคำสั่ง SELECT SELECT *,MATCH(`result`) AGAINST('keyword') as `score` FROM `table1` WHERE MATCH(`result`) AGAINST('keyword') UNION SELECT *,MATCH(`content`) AGAINST('keyword') as `score` FROM `table2` WHERE MATCH(`content`) AGAINST('keyword') UNION SELECT *,MATCH(`text`) AGAINST('keyword') as `score` FROM `table3` WHERE MATCH(`text`) AGAINST('keyword') ในกรณีดังกล่าวคะแนนต่อตาราง + พวกเขาจะไม่เรียงตามความเกี่ยวข้อง แต่ฉันลองวิธีนี้ซึ่งใช้งานได้ แต่ไม่คุ้มค่ากับการผลิต SELECT * FROM ( SELECT *,MATCH(`result`) AGAINST('keyword') as `score` FROM `table1` …

1
การปรับให้เหมาะสมของแบบสอบถาม: ช่วงเวลา
ในหลักฉันมีช่วงเวลาสองชนิด: presence time และ absence time absence time อาจเป็นประเภทที่แตกต่างกัน (เช่นตัวแบ่งการขาดวันพิเศษและอื่น ๆ ) และช่วงเวลาอาจทับซ้อนและ / หรือตัดกัน มันเป็นความไม่แน่นอนว่ามีเพียงการรวมกันเป็นไปได้ของช่วงเวลาที่มีอยู่ในข้อมูลดิบเช่น การทับซ้อนช่วงเวลาการแสดงตนไม่สมเหตุสมผล แต่อาจมีอยู่ ฉันพยายามระบุช่วงเวลาการแสดงตนที่เกิดขึ้นในหลาย ๆ ทางในตอนนี้สำหรับฉันความสะดวกสบายที่ดีที่สุดน่าจะเป็น follwing ;with "timestamps" as ( select "id" = row_number() over ( order by "empId", "timestamp", "opening", "type" ) , "empId" , "timestamp" , "type" , "opening" from ( select …

1
SQL Server สั่งซื้อผลลัพธ์อย่างไรเมื่อใช้การรวม
SQL Server จะหาลำดับของระเบียนในชุดผลลัพธ์ของการดำเนินการแบบสอบถามได้อย่างไร ฉันพยายามทำให้หัวหรือก้อยของมัน แต่พบว่าตัวเองเกาหัวของฉัน เมื่อฉันเปลี่ยนเขตข้อมูลฉันกำลังเลือกคำสั่งซื้อก็จะเปลี่ยนไปเช่นกัน เมื่อฉันรัน SQL ด้านล่างด้วยSELECT *ฉันได้รับบันทึกเดียวกัน แต่ในลำดับที่แตกต่างกันมาก SELECT TOP (900) AD.ATTACHMENTID, AD.NAME, AD.ISINLINE, AD.INSERTEDDATETIME, ATMT.ATTACHMENTBLOB, U.UFID FROM ATTACHMENTDETAIL AD WITH (NOLOCK) INNER JOIN MESSAGEATTACHMENT MA ON MA.ATTACHMENTID = AD.ATTACHMENTID INNER JOIN ATTACHMENT ATMT ON ATMT.ATTACHMENTID = AD.ATTACHMENTID INNER JOIN MESSAGE MSG ON MSG.ID = MA.MESSAGEID INNER …

3
การจำลองแบบล้มเหลว วิธีการที่จะไปอีกครั้ง?
ฉันใช้ Postgres 9.1.6 บน Ubuntu และฉันมีการตั้งค่าการจำลองแบบสตรีมมิ่งระหว่างต้นแบบและทาส ทุกอย่างทำงานได้อย่างราบรื่นจนกระทั่งฐานข้อมูลขัดข้องและเราต้องรีสตาร์ทกล่องทั้งสอง ตอนนี้การจำลองแบบได้หยุดลงและเมื่อตรวจสอบบันทึกในกล่องทั้งสองฉันเห็นข้อความนี้: CDT FATAL: ส่วน WAL ที่ร้องขอ 0000000100000224000000FA ถูกลบแล้ว เป็นกลุ่มเดียวกันซ้ำแล้วซ้ำอีก จาก Googling ของฉันดูเหมือนว่าเซิร์ฟเวอร์การจำลองกำลังพยายามเรียกคืนเซกเมนต์นี้จากต้นแบบ แต่ไม่ได้อยู่ที่นั่นอีกต่อไป โอเค แต่จะทำยังไงดีล่ะ? ฉันจำเป็นต้องทำการสำรองข้อมูลใหม่และ rsync ที่ไปยังทาสหรือไม่? มีวิธีง่าย ๆ ในการทำให้ทาสกลับมาซิงค์กันหรือไม่?

3
ฉันจะตรวจสอบการตั้งค่าความปลอดภัยของ SQL Server Endpoint ได้อย่างไร
ฉันอยู่ในกระบวนการสร้างสภาพแวดล้อมการทดสอบสำหรับพนักงานพัฒนาเซิร์ฟเวอร์ SQL ของเรา ในการผลิตเรามี SQL Server 3 ตัวSQL01มีฐานข้อมูลหลายตัวที่ทำมิเรอSQL02ร์ SQL03ทำหน้าที่เป็นพยานใน "ความปลอดภัยสูงพร้อมการล้มเหลวอัตโนมัติ" หรือการกำหนดค่าแบบซิงโครนัส ฉันใช้ VMWare P2V เพื่อทำเวอร์ชวลไลเซชันทั้งสามเครื่องบนฮาร์ดแวร์แยกต่างหากกำหนดค่า SID ของเครื่องอีกครั้งและทำการซ่อนที่อยู่ IP ของเซิร์ฟเวอร์การผลิตของเราจากเครื่องใหม่เหล่านี้ ตอนแรกฉันลืมที่จะ blackhole เครื่องจักรพยานการผลิตดังนั้นฐานข้อมูลในเครื่องทดสอบยังคงใช้SQL03เครื่องเป็นพยาน TEST03สังเกตเห็นปัญหาที่ฉันตัดสินใจที่จะกำหนดค่าฐานข้อมูลในการทดสอบที่จะชี้ไปที่พยานทดสอบเสมือนจริงขึ้นใหม่เรียกว่า ในการกำหนดค่าฐานข้อมูลใหม่เพื่อใช้พยานคนใหม่ฉันได้ป้อนคำสั่งต่อไปนี้บนเซิร์ฟเวอร์หลักTEST01: ALTER DATABASE [TestDB] SET WITNESS = 'TCP://TEST03.domain.inet:5022'; การตอบสนองที่ไม่คาดคิด: The ALTER DATABASE command could not be sent to the remote server instance 'TCP://TEST03.domain.inet:5022'. The database mirroring configuration …

1
การสร้างตาราง MySQL ช้าอย่างบ้าคลั่ง
การสร้างตารางอย่างง่าย ๆ บนหนึ่งในฐานข้อมูล MySQL ของฉันใช้เวลาตลอดไป: mysql> CREATE TABLE blah (id BIGINT UNSIGNED NOT NULL PRIMARY KEY); Query OK, 0 rows affected (16.58 sec) เครื่องค่อนข้างไม่ได้ใช้งาน: 01:21:26 PM CPU %user %nice %system %iowait %steal %idle 01:21:27 PM all 0.50 0.00 0.21 0.00 0.00 99.29 แนวคิดใดที่จะตรวจสอบเรื่องนี้? แก้ไข : ทำตามคำแนะนำของ DTestนี่คือโปรไฟล์การดำเนินการ: mysql> SHOW PROFILE …

1
Seq Scan ที่ไม่คาดคิดเมื่อทำเคียวรีกับบูลีนที่มีค่า NULL
ฉันมีคอลัมน์ฐานข้อมูลที่เรียกว่าที่คอลัมน์ชนิดคือauto_review booleanมีดัชนีสำหรับฟิลด์นั้นซึ่งสร้างโดยใช้ ActiveRecord ORM CREATE INDEX index_table_on_auto_renew ON table USING btree (auto_renew); เมื่อฉันสอบถามฟิลด์สำหรับค่าบูลีน PG จะใช้ดัชนีตามที่คาดไว้ EXPLAIN for: SELECT "table".* FROM "table" WHERE "table"."auto_renew" = 'f' QUERY PLAN ---------------------------------------------------------------------------------------------- Bitmap Heap Scan on table (cost=51.65..826.50 rows=28039 width=186) Filter: (NOT auto_renew) -> Bitmap Index Scan on index_domains_on_auto_renew (cost=0.00..44.64 rows=2185 width=0) Index Cond: …

3
วิธีแมปเซิร์ฟเวอร์อื่นผ่าน SQL Server Management Studio
ฉันพยายามแมปเซิร์ฟเวอร์อื่นโดยให้คำสั่ง EXEC xp_cmdshell 'NET USE H:\\568.256.8.358\backup_147 1234abc /USER:cranew /PERSISTENT:yes' ฉันพบข้อผิดพลาดกับสิ่งนี้: ไม่พบเส้นทางเครือข่าย แต่ฉันสามารถแมปเซิร์ฟเวอร์อื่นด้วยตนเองได้ โปรดช่วยฉันในการเรียงลำดับ

3
SELECT ROW_NUMBER () รับประกันว่าจะให้ผลลัพธ์ที่เรียงลำดับตามหมายเลขแถวที่สร้างขึ้นหรือไม่
เช่นพิจารณาแบบสอบถาม SQL: SELECT A.[Name], ROW_NUMBER() OVER(ORDER BY A.[Name] ASC) FROM [FooTable] AS A ที่นี่ฉันสังเกตเห็นผลลัพธ์ที่ถูกส่งคืนโดย A. [ชื่อ] หากฉันเปลี่ยนคอลัมน์เรียงลำดับที่กำหนดไว้ในฟังก์ชัน ROW_NUMBER เป็นคอลัมน์อื่นผลลัพธ์จะกลายเป็นคอลัมน์เรียงลำดับอีกครั้ง ฉันคาดหวังว่าหมายเลขแถวจะถูกกำหนดให้กับแถว แต่ฉันไม่ได้คาดหวังว่าแถวจะกลับมาเรียงตามเกณฑ์เดียวกัน นี่เป็นเพียงผลข้างเคียงของวิธีการดำเนินการค้นหา (ในกรณีของฉันใน SQL Server 2008 R2) หรือพฤติกรรมนี้รับประกันได้หรือไม่ (ฉันไม่พบการอ้างอิงถึงการรับประกันดังกล่าว)

1
จะเกิดอะไรขึ้นเมื่อคุณแก้ไข (ลด) ความยาวของคอลัมน์
ช่วยบอกฉันมีสองคอลัมน์ของชนิดNUMBER(โดยไม่ต้องแม่นยำและขนาด) VARCHAR(300)และ ผมเห็นว่าคอลัมน์เหล่านี้เป็นวิธีที่มีขนาดใหญ่เกินไปสำหรับข้อมูลของฉันดังนั้นฉันต้องการที่จะปรับเปลี่ยนให้พวกเขาและNUMBER(11) VARCHAR(10)ดังนั้นถ้าฉันรันคำสั่ง SQL นี้: ALTER TABLE FOO MODIFY(BAR NUMBER(10)); ฉันจะสามารถทำเช่นนั้นในคอลัมน์ที่ไม่มีข้อมูลได้หรือไม่ ถ้าเป็นเช่นนั้นจะเกิดอะไรขึ้นถ้ามีค่าหนึ่งมากกว่าNUMBER(10)คำทำนายจะบอกฉันเกี่ยวกับมัน? ค่าเริ่มต้นของคอลัมน์จะไม่เปลี่ยนแปลงหากกำหนดไว้ก่อนหน้านี้หรือไม่ ตัวเลือก nullable คอลัมน์จะไม่เปลี่ยนแปลงหรือไม่ คีย์หลักต่างประเทศรหัสเฉพาะในคอลัมน์นั้นจะไม่มีการเปลี่ยนแปลงหรือไม่ ข้อ จำกัด ที่เกี่ยวข้องกับคอลัมน์นั้นจะไม่มีการเปลี่ยนแปลงหรือไม่ ดัชนีในคอลัมน์นั้นจะไม่มีการเปลี่ยนแปลงหรือไม่ มีเอกสารอย่างเป็นทางการตอบคำถามของฉันหรือไม่

3
แบบสอบถามทั้งสองนี้เทียบเท่ากันอย่างมีเหตุผลหรือไม่
แบบสอบถามทั้งสองนี้เทียบเท่ากันอย่างมีเหตุผลหรือไม่ DECLARE @DateTime DATETIME = GETDATE() แบบสอบถาม 1 SELECT * FROM MyTable WHERE Datediff(DAY, LogInsertTime, @DateTime) > 7 แบบสอบถาม 2 SELECT * FROM MyTable WHERE LogInsertTime < @DateTime - 7 ถ้ามันไม่เท่ากันอย่างมีเหตุผลคุณช่วยให้ฉันมีเหตุผลเทียบเท่ากับการสืบค้นแรกเพื่อที่ WHERE clause สามารถใช้ดัชนีได้อย่างมีประสิทธิภาพ (เช่นกำจัดการตัดฟังก์ชั่น)?

3
เปรียบเทียบราคาในสกุลเงินที่แตกต่างกันอย่างมีประสิทธิภาพ
ฉันต้องการให้ผู้ใช้สามารถค้นหาผลิตภัณฑ์ภายในช่วงราคาได้ ผู้ใช้ควรสามารถใช้สกุลเงินใดก็ได้ (USD, EUR, GBP, JPY, ... ) ไม่ว่าผลิตภัณฑ์จะมีการตั้งค่าสกุลเงินใดก็ตาม ดังนั้นราคาผลิตภัณฑ์คือ 200 ดอลล่าร์สหรัฐฯและหากผู้ใช้ค้นหาผลิตภัณฑ์ที่มีค่าใช้จ่าย 100EUR - 200EUR เขาก็อาจจะหาได้ จะทำให้มันเร็วและมีประสิทธิภาพได้อย่างไร? นี่คือสิ่งที่ฉันได้ทำมาจนถึงตอนนี้ ฉันเก็บprice, currency codeและcalculated_priceที่เป็นราคาในสกุลเงินยูโร (EUR) ที่เป็นสกุลเงินเริ่มต้น CREATE TABLE "products" ( "id" serial, "price" numeric NOT NULL, "currency" char(3), "calculated_price" numeric NOT NULL, CONSTRAINT "products_id_pkey" PRIMARY KEY ("id") ); CREATE TABLE "currencies" ( "id" …
10 postgresql  money 

3
Visio 2010 และ SQL 2012 - การดำเนินการแบบย้อนกลับ
เราได้อัพเกรดเป็น SQL 2012 และกำลังพยายามที่จะแปลง DBS ของเราเป็น Visio 2010 ฉันตั้งค่าการเชื่อมต่อโดยใช้ไดรเวอร์ SQL 11 และ Visio บ่นว่าไดรเวอร์นั้นไม่ได้รับการสนับสนุน มีใครวิ่งเข้าไปในนี้?

2
ฉันจะกำหนดค่า MySQL Innodb ให้จัดการกับเม็ดมีด 1000 ต่อชั่วโมงได้อย่างไร
ฉันมีเว็บไซต์ที่มีปริมาณการใช้งานสูงซึ่งเป็นไปได้ที่จะมีการแทรกระเบียนใหม่ 1,000 รายการทุกชั่วโมง ข้อผิดพลาดเดียวนี้ทำให้หมดอำนาจเว็บไซต์: PDOException: SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock; try restarting transaction: INSERT INTO {location_instance} (nid, vid, uid, genid, lid) VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3, :db_insert_placeholder_4); Array ( [:db_insert_placeholder_0] => 1059 [:db_insert_placeholder_1] => 1059 [:db_insert_placeholder_2] => 0 [:db_insert_placeholder_3] => cck:field_item_location:1059 [:db_insert_placeholder_4] => 1000 …

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