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

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

3
วิธีการกำหนดค่าสำหรับการประเมินขนาดบัฟเฟอร์พูลที่เหมาะสมคืออะไร?
ฉันกำลังพยายามหาวิธีที่ชาญฉลาดเพื่อทำความเข้าใจว่าการmax server memory (mb)ตั้งค่านั้นเหมาะสมหรือไม่ (ควรจะต่ำกว่าหรือสูงกว่าหรืออยู่ในแนวทางที่เหมาะสม) ฉันรู้ว่าmax server memory (mb)ควรจะต่ำพอที่จะออกจากห้องสำหรับระบบปฏิบัติการตัวเอง ฯลฯ สภาพแวดล้อมที่ฉันกำลังมองหามีเซิร์ฟเวอร์หลายร้อยเครื่อง ฉันต้องการสูตรที่เชื่อถือได้ฉันสามารถใช้เพื่อตรวจสอบว่าขนาดปัจจุบันของบัฟเฟอร์พูลนั้นเหมาะสมหรือไม่เนื่องจาก RAM คิดต้นทุนต่อ GB ที่จัดสรรให้กับเซิร์ฟเวอร์แต่ละเครื่อง สภาพแวดล้อมทั้งหมดถูกจำลองเสมือนและ RAM "ทางกายภาพ" ที่จัดสรรให้กับ VM สามารถเปลี่ยนแปลงได้ง่ายขึ้นหรือลง ฉันมีอินสแตนซ์ของเซิร์ฟเวอร์ SQL ที่เฉพาะเจาะจงฉันกำลังดูด้วย PLE ที่ 1,100,052 วินาทีซึ่งเท่ากับ 12.7 วัน (ระยะเวลาที่เซิร์ฟเวอร์ใช้งาน) เซิร์ฟเวอร์มีการตั้งค่าหน่วยความจำสูงสุดของเซิร์ฟเวอร์ที่ 2560MB (2.5GB) ซึ่งมีการกำหนดเพียง 1380MB (1.3GB) เท่านั้น ฉันได้อ่านหลายรายการรวมถึงหนึ่งโดย Jonathan Keheyias ( โพสต์ ) และอีกรายการโดย Paul Randal ( โพสต์ …

6
วิธีการแปลงจำนวนเต็มเป็นบูลีนในประโยค MySQL SELECT?
ฉันใหม่ที่นี่ดังนั้นโปรดฉัน ฉันมีสถานการณ์ต่อไปนี้: ฉันมีหลายตารางซึ่งเพื่อความเรียบง่ายจะถูกแสดงในมุมมองในฐานข้อมูล MySQL ของฉัน ปัญหาของฉันคือฉันต้องการค่าในมุมมองนี้แสดงว่าเป็นเหตุการณ์ประเภทหนึ่งหรืออื่น (บูลีนที่เรียบง่าย) ซึ่งฉันพยายามที่จะบรรลุด้วย: `gu`.`StoppingUnitEventME` = `ese`.`MonitoringElement` AS `IsStopingEvent` ผลลัพธ์ถูกแสดงเป็น int และดังนั้นถูกอ่านโดย Entity Framework ปัญหาคือฉันต้องการค่าบูลีนคืนซึ่งฉันพยายามทำด้วย: CAST((`gu`.`StoppingUnitEventME` = `ese`.`MonitoringElement`) as boolean) AS `IsStopingEvent` สิ่งนี้ส่งผลให้เกิดข้อผิดพลาดข้อหนึ่งที่ไม่ปรากฏให้ฉันเห็นใน MySQL Workbench (ฉันได้รับเฉพาะที่น่ารำคาญ "คุณมีข้อผิดพลาดใน ... ") พวกคุณช่วยฉันออกมาได้ไหม พยายามที่จะแก้ปัญหาในแอปพลิเคชันของฉัน แต่ฉันจริง ๆ preffer นี้แก้ไขได้ในฐานข้อมูลเพราะมันจะถูกใช้โดยซอฟต์แวร์อื่น ๆ ในภายหลัง

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 …

19
SQL Server Management Studio เปิดหน้าต่างใหม่ช้า
หลังจากอัปเกรดทั้ง SQL Server และ Management Studio จาก 2008 เป็น 2012 Management Studio 2012 จะช้ามากเมื่อเปิดหน้าต่างแบบสอบถามและกล่องโต้ตอบใหม่ แม้แต่การคลิกขวาที่ตารางก็ช้า โดยทั่วไปจะมีความล่าช้าอย่างน้อย 5 วินาทีก่อนที่ฉันจะเริ่มทำอะไรก็ได้ภายในหน้าต่าง สิ่งนี้เกิดขึ้นทุกครั้งแม้ว่าฉันจะเปิดหน้าต่างเดียวกันสองครั้งติดต่อกัน ทำไมสิ่งนี้ถึงเกิดขึ้นและฉันจะแก้ไขได้อย่างไร แอปพลิเคชั่นอื่น ๆ สร้างการเชื่อมต่อกับฐานข้อมูลอย่างรวดเร็ว สิ่งที่ฉันลองซึ่งไม่ได้ช่วย: Hit บน Google ที่ฉันต้องการแก้ไขhostsไฟล์ของฉัน การรีเซ็ต SSMS "การตั้งค่าที่ผู้ใช้กำหนด" การอัปเดตไดรเวอร์วิดีโอปิดการเร่งด้วยฮาร์ดแวร์ปิดการใช้งาน DirectX ปิดใช้งานบริการการรับรองความถูกต้องทางชีวภาพ (ฉันไม่ได้ติดตั้ง) คอมพิวเตอร์ของฉันควรจะเร็วเกินพอและฉันยังมี RAM 16GB ฮาร์ดแวร์ของฉันไม่ควรเป็นปัญหา ดูเหมือนว่า SSMS กำลังรอบางสิ่งอยู่ฉันสามารถใช้งานโปรแกรมอื่นได้อย่างราบรื่นในขณะที่สิ่งนี้กำลังเกิดขึ้น ฉันไม่มีโอกาสติดตั้งการอัปเดต SQL Server 2012 CU1 เนื่องจากดูเหมือนว่ามีความเสี่ยงของข้อผิดพลาดในการติดตั้งโปรแกรมแก้ไขด่วนและฉันไม่สามารถเสี่ยงได้ในขณะนี้

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, …

3
OPTION FAST ในคำสั่ง SELECT ทำอะไร?
ฉันได้ทำการขุดในสิ่งที่OPTION (FAST XXX)คำใบ้ในแบบสอบถามSELECTและฉันยังสับสนอยู่ อ้างอิงจาก MSDN: ระบุว่าเคียวรีถูกปรับให้เหมาะสมสำหรับการดึง number_rows แรกอย่างรวดเร็ว นี่เป็นจำนวนเต็มที่ไม่ใช่ค่าลบ หลังจากที่ number_rows แรกถูกส่งคืนเคียวรีจะยังคงประมวลผลและสร้างชุดผลลัพธ์แบบเต็ม สำหรับฉันที่ไม่สมเหตุสมผล แต่โดยทั่วไปแล้วการสืบค้นจะได้แถว XXX แรกเร็วมากจากนั้นส่วนที่เหลือที่ความเร็วปกติคืออะไร แบบสอบถาม Microsoft Dynamics ที่ทำให้ฉันคิดในเรื่องนี้คือ: select pjproj.project,pjproj.project_desc,pjproj.customer,pjproj.cpnyid from pjproj WITH (NOLOCK) where project like '%' order by project OPTION(FAST 500) ทุกคนสามารถอธิบายได้อย่างชัดเจนว่าคำใบ้ของแบบสอบถามนี้กำลังทำอะไรและมีข้อได้เปรียบเหนือการไม่ใช้

3
เป็นที่ยอมรับได้หรือไม่ที่จะมีการอ้างอิงคีย์ต่างประเทศแบบวงกลม \ จะหลีกเลี่ยงได้อย่างไร?
เป็นที่ยอมรับหรือไม่ที่จะมีการอ้างอิงแบบวงกลมระหว่างสองตารางในเขตข้อมูล foreign key? หากไม่สามารถหลีกเลี่ยงสถานการณ์เหล่านี้ได้อย่างไร ถ้าเป็นเช่นนั้นข้อมูลจะถูกแทรกได้อย่างไร? ด้านล่างเป็นตัวอย่างของที่ (ในความคิดของฉัน) อ้างอิงวงกลมจะยอมรับได้: CREATE TABLE Account ( ID INT PRIMARY KEY IDENTITY, Name VARCHAR(50) ) CREATE TABLE Contact ( ID INT PRIMARY KEY IDENTITY, Name VARCHAR(50), AccountID INT FOREIGN KEY REFERENCES Account(ID) ) ALTER TABLE Account ADD PrimaryContactID INT FOREIGN KEY REFERENCES Contact(ID)

3
วิธีการเลือกที่แตกต่างกันสำหรับหนึ่งคอลัมน์และในคอลัมน์อื่น?
ฉันต้องการสอบถามฐานข้อมูล SQL เพื่อค้นหาค่าที่แตกต่างทั้งหมดของหนึ่งคอลัมน์และฉันต้องการค่าที่กำหนดเองจากคอลัมน์อื่น ตัวอย่างเช่นพิจารณาตารางต่อไปนี้ที่มีสองคอลัมน์คีย์และค่า: key value === ===== one test one another one value two goes two here two also three example ฉันต้องการกลับแถวตัวอย่างหนึ่งแถวเลือกโดยพลจากคีย์ที่แตกต่างกันแต่ละอันบางทีรับสามแถวเหล่านี้: key value === ===== one test two goes three example ฉันจะกำหนดแบบสอบถามดังกล่าวใน SQL ได้อย่างไร
29 query 

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

3
เหตุใด ANSI SQL จึงกำหนด SUM (ไม่มีแถว) เป็น NULL
กำหนด ANSI SQL มาตรฐาน (บทที่ 6.5 เปฟังก์ชั่นชุด) พฤติกรรมต่อไปนี้สำหรับฟังก์ชันการรวมในชุดผลลัพธ์ที่ว่างเปล่า COUNT(...) = 0 AVG(...) = NULL MIN(...) = NULL MAX(...) = NULL SUM(...) = NULL การส่งคืนค่า NULL สำหรับ AVG, MIN และ MAX เหมาะสมอย่างยิ่งเนื่องจากค่าเฉลี่ยค่าต่ำสุดและค่าสูงสุดของชุดว่างเปล่านั้นไม่ได้ถูกกำหนด อย่างไรก็ตามอันสุดท้าย, ทำให้ฉันรำคาญใจ: ในทางคณิตศาสตร์, SUM ของเซตว่างนั้นถูกนิยามไว้อย่างดี: 0. การใช้ 0 องค์ประกอบที่เป็นกลางของการเติมเนื่องจากเคสฐานทำให้ทุกอย่างสอดคล้องกัน: SUM({}) = 0 = 0 SUM({5}) = 5 = 0 …

3
เหตุใดจึงแนะนำให้เก็บ BLOB ในตาราง SQL Server แยกต่างหาก
คำตอบ SO up-upvoted นี้แนะนำให้วางรูปภาพในตารางแยกกันแม้ว่าจะมีความสัมพันธ์แบบ 1: 1 กับตารางอื่นเท่านั้น: หากคุณตัดสินใจที่จะวางรูปภาพของคุณลงในตาราง SQL Server ฉันขอแนะนำอย่างยิ่งให้ใช้ตารางแยกต่างหากสำหรับการจัดเก็บรูปภาพเหล่านั้น - อย่าเก็บรูปถ่ายของพนักงานในตารางพนักงาน - เก็บไว้ในตารางแยกต่างหาก ด้วยวิธีนี้ตารางพนักงานสามารถอยู่ได้อย่างคล่องตัวและมีความหมายและมีประสิทธิภาพมากโดยสมมติว่าคุณไม่จำเป็นต้องเลือกรูปถ่ายของพนักงานเช่นกันซึ่งเป็นส่วนหนึ่งของคำสั่งของคุณ ทำไม? ฉันรู้สึกว่าSQL Server จะเก็บตัวชี้ไปที่โครงสร้างข้อมูล BLOB เฉพาะบางตัวในตารางเท่านั้นดังนั้นทำไมต้องสร้างเลเยอร์ทางอ้อมอีกด้านหนึ่งด้วยตนเอง มันปรับปรุงประสิทธิภาพอย่างมีนัยสำคัญจริงๆเหรอ? ถ้าใช่ทำไม
28 sql-server  blob 

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
ถ้าเป็นบวกให้รวมทุกรายการ หากลบให้คืนค่าแต่ละค่า
ฉันต้องการหาวิธีหาSUM()ค่าบวกทั้งหมดnumและคืนSUM()ค่าจำนวนบวกทั้งหมดและแถวแต่ละแถวสำหรับจำนวนลบแต่ละค่า ด้านล่างเป็นตัวอย่าง DDL: Create Table #Be ( id int , salesid int , num decimal(16,4) ) Insert Into #BE Values (1, 1, 12.32), (2, 1, -13.00), (3, 1, 14.00) , (4, 2, 12.12), (5, 2, 14.00), (6, 2, 21.23) , (7, 3, -12.32), (8,3, -43.23), (9, 3, -2.32) และนี่คือผลลัพธ์ที่ต้องการของฉัน (จำนวนบวกสำหรับพนักงานขายแต่ละคนSUM()และรายการเชิงลบได้รับการส่งคืนแต่ละบรรทัด): …

2
ใช้มุมมองที่จัดทำดัชนีไว้สำหรับการรวม - ดีเกินจริงหรือ?
เรามีคลังข้อมูลที่มีจำนวนเรกคอร์ดที่ค่อนข้างใหญ่ (10-20 ล้านแถว) และมักเรียกใช้คิวรีที่นับเร็กคอร์ดระหว่างวันที่แน่นอนหรือนับจำนวนเรกคอร์ดด้วยค่าสถานะที่แน่นอนเช่น SELECT f.IsFoo, COUNT(*) AS WidgetCount FROM Widgets AS w JOIN Flags AS f ON f.FlagId = w.FlagId WHERE w.Date >= @startDate GROUP BY f.IsFoo ประสิทธิภาพไม่น่ากลัว แต่อาจค่อนข้างเชื่องช้า (อาจใช้เวลา 10 วินาทีในแคชเย็น) เมื่อเร็ว ๆ นี้ฉันค้นพบว่าฉันสามารถใช้GROUP BYในมุมมองที่จัดทำดัชนีและลองใช้บางสิ่งที่คล้ายกับต่อไปนี้ CREATE VIEW TestView WITH SCHEMABINDING AS SELECT Date, FlagId, COUNT_BIG(*) AS WidgetCount FROM …

3
MongoDB ใช้หน่วยความจำมากเกินไป
เราใช้ MongoDB เป็นเวลาหลายสัปดาห์แล้วแนวโน้มโดยรวมที่เราเห็นคือ mongodb ใช้หน่วยความจำมากเกินไป (มากกว่าขนาดของชุดข้อมูล + ดัชนีทั้งหมด) ฉันได้อ่านคำถามนี้แล้วและคำถามนี้แต่ดูเหมือนจะไม่มีใครตอบปัญหาที่ฉันพบพวกเขากำลังอธิบายสิ่งที่อธิบายไว้ในเอกสารแล้ว ต่อไปนี้เป็นผลลัพธ์ของhtopและแสดงคำสั่งdbs ฉันรู้ว่า mongodb ใช้หน่วยความจำที่แมป IO ดังนั้นโดยทั่วไประบบปฏิบัติการจะจัดการกับการแคชสิ่งต่าง ๆ ในหน่วยความจำและ mongodb ในทางทฤษฎีควรปล่อยหน่วยความจำแคชในทางทฤษฎีเมื่อกระบวนการอื่นร้องขอหน่วยความจำที่ว่างแต่จากสิ่งที่เราเห็น OOM เริ่มฆ่ากระบวนการที่สำคัญอื่น ๆ เช่น postgres, redis และอื่น ๆ (ดังที่เห็นได้ว่าเพื่อเอาชนะปัญหานี้เราได้เพิ่ม RAM เป็น 183GB ซึ่งตอนนี้ใช้งานได้ แต่มีราคาแพงมาก mongo ใช้ ram ~ 87GB เกือบ 4X ของขนาดของชุดข้อมูลทั้งหมด) ดังนั้น, นี่เป็นการใช้งานหน่วยความจำมากมายที่คาดหวังและปกติหรือไม่? (ตามเอกสารประกอบ WiredTiger ใช้ RAM ส่วนใหญ่ประมาณ ~ 60% …

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