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

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

3
การสร้างแบบจำลองสถานการณ์ที่ศิลปินเพลงแต่ละคนเป็นกลุ่มหรือนักดนตรีเดี่ยว
ฉันต้องออกแบบแผนภาพความสัมพันธ์เอนทิตี (ERD) สำหรับบริบททางธุรกิจที่เกี่ยวข้องกับการแบ่งศิลปินเพลงเพราะฉันจะให้รายละเอียดด้านล่าง คำอธิบายสถานการณ์ ศิลปินมีชื่อและต้องเป็นอย่างใดอย่างหนึ่งกลุ่ม หรือดนตรีเดี่ยว ( แต่ไม่ทั้งสอง) กลุ่มถูกสร้างขึ้นจากหนึ่งหรือมากกว่านักแสดงคนเดียวและมีจำนวนสมาชิก (ซึ่งควรจะคำนวณจากจำนวนที่แสดงเดี่ยวทำขึ้นกลุ่ม ) Solo Performerอาจจะเป็นสมาชิกของหลายกลุ่มหรือไม่กลุ่มและอาจจะเล่นหนึ่งหรือมากกว่าเครื่องดนตรี คำถาม วิธีการสร้าง ERD เพื่อเป็นตัวแทนของสถานการณ์ดังกล่าว? ฉันสับสนกับส่วน 'หรือ' ของมัน

3
ข้อมูลการตรวจสอบการจำลองแบบโดยใช้ T-SQL
รูปภาพด้านล่างแสดงปัญหาการจำลองแบบธุรกรรมที่ฉันกำลังตรวจสอบอยู่ รูปภาพมาจากการตรวจสอบการจำลองแบบ ฉันจะรับข้อมูลนี้โดยใช้ T-SQL ได้อย่างไร

2
สแกนดัชนีช้าในตารางขนาดใหญ่
ใช้ PostgreSQL 9.2 ฉันมีปัญหากับการสืบค้นที่ช้าในตารางที่ค่อนข้างใหญ่ (200+ ล้านแถว) ฉันไม่ได้พยายามอะไรที่บ้าคลั่งเพียงแค่เพิ่มคุณค่าทางประวัติศาสตร์ ด้านล่างคือแบบสอบถามและผลลัพธ์แผนแบบสอบถาม เค้าโครงตารางของฉัน: Table "public.energy_energyentry" Column | Type | Modifiers -----------+--------------------------+----------------------------------------------------------------- id | integer | not null default nextval('energy_energyentry_id_seq'::regclass) prop_id | integer | not null timestamp | timestamp with time zone | not null value | double precision | not null Indexes: "energy_energyentry_pkey" PRIMARY …

2
Redis ใช้หน่วยความจำและล่มทั้งหมด
เซิร์ฟเวอร์ redis v2.8.4 กำลังทำงานบน Ubuntu 14.04 VPS พร้อม RAM 8 GB และพื้นที่สลับ 16 GB (บน SSD) อย่างไรก็ตามhtopแสดงให้เห็นว่าredisเพียงลำพังกำลัง22.4 Gหน่วยความจำ! redis-serverในที่สุดก็ล้มเหลวเนื่องจากออกจาก memeory MemและSwpทั้งสองโจมตี 100% จากนั้นredis-serverจะถูกฆ่าพร้อมกับบริการอื่น ๆ จากdmesg: [165578.047682] Out of memory: Kill process 10155 (redis-server) score 834 or sacrifice child [165578.047896] Killed process 10155 (redis-server) total-vm:31038376kB, anon-rss:5636092kB, file-rss:0kB การเริ่มต้นใหม่redis-serverจากความผิดพลาดของ OI หรือservice redis-server …

2
การอัปเดตหลายแถวด้วยค่าที่แตกต่างกันในการสืบค้นเดียว
ฉันพยายามที่จะเข้าใจวิธีการปรับปรุงหลายแถวด้วยค่าที่แตกต่างกันและฉันไม่ได้รับมัน ทางออกมีอยู่ทุกที่ แต่สำหรับฉันมันดูยากที่จะเข้าใจ ตัวอย่างเช่นการอัพเดตสองรายการใน 1 ข้อความค้นหา: UPDATE mytable SET fruit='orange', drink='water', food='pizza' WHERE id=1; UPDATE mytable SET fruit='strawberry', drink='wine', food='fish' WHERE id=2; ฉันไม่เข้าใจว่ากรณีนี้เมื่อใด ... จากนั้น ... END ใช้งานได้และวิธีใช้งาน สงสัยว่ามีคนช่วยฉันได้ไหม
12 mysql  update 

2
เหตุใดมุมมองที่จัดทำดัชนีจึงไม่อนุญาตดัชนีที่ไม่ซ้ำกันแบบคลัสเตอร์
ฉันได้พิจารณาใช้การจัดทำดัชนีการดูเพื่อเพิ่มประสิทธิภาพในการดูที่ใช้บ่อยที่สุดของเรา อย่างไรก็ตามมุมมองที่จัดทำดัชนีไม่สนับสนุนดัชนีคลัสเตอร์ที่ไม่ซ้ำกันซึ่งไปเล็กน้อยกับความสำคัญที่กำหนดโดยส่วนที่เหลือของโครงสร้างฐานข้อมูล ตัวอย่างเช่นที่นี่เป็นเวอร์ชันที่เรียบง่ายของตารางของเราสองสามตัว -Groups- Group ID GroupName -Users- UserKey UserName FullName GroupID ดัชนีอยู่ใน Groups.GroupID (ไม่ทำคลัสเตอร์) และ Users.GroupID (ทำคลัสเตอร์) คีย์คลัสเตอร์ที่อยู่ใน GroupID ในตารางผู้ใช้เป็นช่วงที่ผู้ใช้จากกลุ่มที่เฉพาะเจาะจงมากที่สุดจะถูกดึง เห็นได้ชัดว่าคุณจะมีผู้ใช้หลายคนต่อกลุ่มดังนั้นดัชนีคลัสเตอร์นี้จะไม่ซ้ำกัน สิ่งนี้ทำให้ฉันมีความไม่แน่นอนเล็กน้อยเกี่ยวกับวิธีทำตามความสำคัญนี้เมื่อจัดทำดัชนีมุมมองของฉันเช่นตัวอย่างนี้เนื่องจากฉันไม่สามารถมีดัชนีคลัสเตอร์ที่ไม่ซ้ำกันได้ ConsumableID ConsumableVariantID AllowThresholdOverwrite FullPath GroupID ManufacturerID Type ModelID 101 29 1 0.1.2.4. 4 3 3 2 ในความเป็นจริงแล้วมีเพียงค่าเดียวในมุมมองนี้ซึ่งจะเป็นค่าที่ไม่ซ้ำกันคือคอลัมน์ ConsumableID ดังนั้นฉันจึงเหลือตัวเลือกเพียงเล็กน้อยว่าจะวางดัชนีของฉันไว้ที่ใด เหตุใด Views จึงไม่อนุญาตให้มีดัชนีที่ไม่ซ้ำกันในกลุ่มเมื่อตารางปกติทำ

2
ตั้งค่า character_set_client เป็น utf8mb4
ฉันพยายามแปลงฐานข้อมูลของฉันให้เป็นutf8mb4ไปตามคู่มือนี้ ฉันได้ตั้ง: [client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4 [mysqld] init-connect='SET NAMES utf8mb4' collation_server=utf8mb4_unicode_ci character_set_server=utf8mb4 skip-character-set-client-handshake แต่คุณค่าของcharacter_set_clientและcharacter_set_resultsยังคงไม่เปลี่ยนเป็น utf8mb4 mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%'; +--------------------------+--------------------+ | Variable_name | Value | +--------------------------+--------------------+ | character_set_client | utf8 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem …
12 mysql  collation  utf-8 

1
การจัดเก็บและการสืบค้นข้อมูลการกลิ้งใน PostgreSQL
ฉันมีข้อมูลโมเดลสภาพอากาศจำนวนมากถูกใส่ลงในฐานข้อมูล PostgreSQL เครื่องมี 8 คอร์และ RAM 16 GB ฉันใช้ PostgreSQL 9.3 กับ PostGIS 2.1 แต่ละตารางจะมีข้อมูลสภาพอากาศที่แตกต่างกัน (อุณหภูมิจุดน้ำค้างลม ฯลฯ ) แต่ละตารางจะมีคอลัมน์ 6-7 คอลัมน์: ละติจูดลองจิจูดลองจิจูดเรขาคณิตระดับความสูงวันที่และเวลาที่แบบจำลองนั้นเกี่ยวข้องและค่าข้อมูลที่น่าสนใจ 1-2 รายการ ข้อมูลจะถูกสอบถามเป็นหลักสำหรับกล่อง bounding ตามเวลาและระดับความสูง จะมีประมาณ 145,757,360 แถวต่อตาราง (ข้อมูลที่เก่ากว่าตอนนี้จะไม่ถูกลบอีกต่อไป) ฉันประมาณขนาดของตารางโดยประมาณประมาณ 10 GB โดยไม่มีดัชนี (นั่นคือข้อมูล 52 ไบต์บวก 23 ไบต์ค่าใช้จ่ายต่อแถว) ข้อมูลจะถูกอัปเดต / แทรกเป็นประจำเมื่อมีข้อมูลโมเดลใหม่ บันทึก: ดังนั้นฉันดูที่แผนสองข้อนี้: เพียงจัดทำดัชนีและจัดกลุ่มตาม (วันที่และเวลา, ระดับความสูง) พร้อมดัชนีเพิ่มเติมสำหรับรูปทรงเรขาคณิตของจุด รันงาน …

3
ข้อผิดพลาด“ ฐานข้อมูลกำลังอยู่ในช่วงเปลี่ยนผ่าน”
วันนี้ฉันพยายามกู้คืนฐานข้อมูลผ่านฐานข้อมูลที่มีอยู่แล้วฉันเพียงคลิกขวาที่ฐานข้อมูลใน SSMS -> ภารกิจ -> ใช้ออฟไลน์เพื่อที่ฉันจะคืนค่าฐานข้อมูล หน้าต่างป๊อปอัปขนาดเล็กปรากฏขึ้นและปรากฏขึ้นQuery Executing.....เป็นครั้งคราวแล้วเกิดข้อผิดพลาดDatabase is in use cannot take it offlineขึ้น จากที่ฉันรวบรวมมีการเชื่อมต่อที่ใช้งานกับฐานข้อมูลนั้นดังนั้นฉันพยายามที่จะดำเนินการค้นหาต่อไปนี้ USE master GO ALTER DATABASE My_DatabaseName SET OFFLINE WITH ROLLBACK IMMEDIATE GO อีกครั้งที่จุดนี้ SSMS พบQuery Executing.....บางครั้งแล้วโยนข้อผิดพลาดต่อไปนี้: Msg 5061, Level 16, State 1, Line 1 ALTER DATABASE failed because a lock could not be placed …

1
ใน PowerShell การดึงข้อความที่พิมพ์จาก SSMS
ทีม DBA ของเราไม่ตรวจสอบการสำรองข้อมูลโดยใช้ด้านล่างTSQL(ซึ่งสามารถทำการสำรองข้อมูลได้อย่างง่ายดายและใช้เวลาไม่นานดังนั้นฉันจึงไม่เข้าใจสาเหตุ) RESTORE VERIFYONLY FROM DISK = 'D:\Backups\LOCATION' พวกเขามีปัญหาในอดีตดังนั้นแม้ว่าเราจะคิดว่าพวกเขาต้องการเรียนรู้จากมันพวกเขาก็ยังไม่ได้ ฉันสร้างสคริปต์ Powershell เพื่อทำเช่นนี้เพราะเรามีเซิร์ฟเวอร์มากกว่า 100 แห่งและฉันต้องการเรียกใช้สคริปต์นี้กับการสำรองข้อมูลทั้งหมดเพียงเพื่อให้มั่นใจว่าถูกต้อง สคริปต์ด้านล่างทำงานอย่างถูกต้อง (ในกรณีที่มันไม่ผิดพลาดหรือผิดพลาด) ฉันอยากรู้ว่ามีวิธีที่จะได้รับข้อความที่พิมพ์กลับมาใน Powershell ซึ่งปกติแล้วเราจะได้รับใน SSMS ซึ่งระบุว่าชุดสำรองในไฟล์ 1 คือ ถูกต้องเป็นการตรวจสอบ $SqlCon = New-Object System.Data.SqlClient.SqlConnection $SqlCon.ConnectionString = "SERVER=SERV\INST;Integrated Security=true;DATABASE=master" $baks = Get-ChildItem "D:\Backups\" -Filter *.BAK foreach ($bak in $baks) { $SqlCon.Open() $cd = New-Object System.Data.SqlClient.SqlCommand $cd.Connection …

1
ฉันควรปิดการใช้งาน "สถิติการอัพเดทอัตโนมัติ" ในสถานการณ์จำลองคลังข้อมูลหรือไม่
ฉันมีคลังข้อมูล 200 GB ใน SQL Server ฉันประสบกับการดำเนินการช้ามากสำหรับบางข้อความค้นหา ตัวอย่างเช่น 12 ชั่วโมงเพื่อให้ง่ายแบบสอบถามกับdeleteinner join หลังจากทำการวิจัยด้วยแผนการดำเนินการฉันได้อัปเดตสถิติของตาราง 2 ตารางที่เกี่ยวข้องในแบบสอบถามโดยใช้WITH FULLSCANตัวเลือก ตอนนี้แบบสอบถามดำเนินการในเวลาน้อยกว่าหนึ่งวินาทีดังนั้นจึงปรากฏว่าสถิติไม่ทันสมัย ฉันกำลังพิจารณาปิดใช้งานauto update statisticsฐานข้อมูลและทำงานUPDATE STATISTICSด้วยตนเองหลังจากโหลดคลังข้อมูลแล้ว คลังข้อมูลจะถูกโหลดเพิ่มขึ้นจากระบบ ERP ต้นทางทุกวันในเวลากลางคืน ฉันถูกต้องในการสมมติว่าauto update statisticsในสถานการณ์คลังข้อมูลไม่ได้มีประโยชน์จริง ๆ ? จะเป็นการดีกว่าหรือที่จะอัปเดตสถิติด้วยตนเองหลังจากโหลดข้อมูลแล้ว

2
การจัดการโซนเวลาใน data mart / คลังสินค้า
เราเริ่มออกแบบหน่วยการสร้างดาต้ามาร์ต / คลังสินค้าและเราต้องสามารถรองรับโซนเวลาทั้งหมด (ลูกค้าของเรามาจากทั่วทุกมุมโลก) จากการอ่านการสนทนาออนไลน์ (และในหนังสือ) ดูเหมือนว่าวิธีแก้ปัญหาทั่วไปจะมีมิติวันที่และเวลาแยกจากกันรวมถึงการประทับเวลาในตารางข้อเท็จจริง อย่างไรก็ตามคำถามที่ฉันมีเวลาตอบยากคือขนาดและวันที่และเวลาที่ดีสำหรับฉันจริง ๆ แล้วพิจารณาความต้องการโซนเวลาแบบไดนามิกของฉันได้อย่างไร มิติเวลาทำให้รู้สึกมากกว่าเล็กน้อย แต่ฉันมีเวลายากกับมิติวันที่ แนวทางการออกแบบทั่วไปสำหรับส่วนข้อมูลวันที่มักจะมีคุณสมบัติเช่นชื่อวันวันในสัปดาห์ชื่อเดือน ฯลฯ ปัญหาที่ฉันมีอยู่ทั้งหมดคือ 23.00 น. ในวันอังคารที่ 31 ธันวาคม 2013 ใน UTC คือวันพุธ , 1 มกราคม 2014 ในโซนเวลาทั้งหมดที่อยู่หลัง UTC + 2 ดังนั้นถ้าฉันจะต้องทำการแปลงโซนเวลาเหล่านี้ทั้งหมดในทุก ๆ แบบสอบถาม (และรายงาน) แล้วประเด็นของการมีและการจัดเก็บคุณสมบัติเหล่านี้ที่ฉันอาจจะไม่เคยใช้ (ดูเหมือน) คืออะไร? บางคนแนะนำให้มีแถวความจริงสำหรับแต่ละเขตเวลา แต่ดูเหมือนว่าไร้สาระสำหรับฉัน เราต้องสามารถเก็บบันทึกได้หลายล้านรายการในแต่ละเดือน คนอื่น ๆ แนะนำให้มีตารางบริดจ์โซนเวลาซึ่งแม้ว่าจะมีเหตุผลบางอย่าง แต่ก็ดูเหมือนว่าจะมีความซับซ้อนและการรวมพิเศษเพื่อให้บรรลุสิ่งที่ลูกค้าและแอพของฉันควรจะสามารถหาได้จากวันที่ (การรายงานจะใช้เว็บเป็นหลัก ที่ซึ่งมีไลบรารีจำนวนมากมายเพื่อช่วยในการแปลงแสดงและจัดรูปแบบวันที่) สิ่งเดียวที่ฉันคิดได้คือความง่ายและประสิทธิภาพของการจัดกลุ่มตามวันที่และเวลา แต่วิธีที่แย่คือการจัดกลุ่มตามวันที่ …

2
ไม่สามารถแปลงค่าได้เนื่องจากอาจสูญเสียข้อมูล [ปิด]
ปิด คำถามนี้ต้องการรายละเอียดหรือความคมชัด ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ เพิ่มรายละเอียดและชี้แจงปัญหาโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ผมขอเริ่มด้วยการชี้แจงว่านี่ไม่ใช่คำถามซ้ำซ้อนหรืออาจเป็นซ้ำได้สำหรับเรื่องนั้น ฉันได้ลองใช้ทุกคำตอบกับทุกตัวแปรที่มีอยู่ของปัญหานี้แล้วใน StackOverflow และ DBA Stack Exchange โดยไม่มีโชค ฉันดิ้นรนกับปัญหานี้ในช่วงสองวันที่ผ่านมา (ทำงานกับมันประมาณ 7 ชั่วโมงต่อวัน) และแม้หลังจาก Googling ปัญหาก็ปรากฏว่าไม่มีใครมีปัญหาที่แตกต่างกันของปัญหาของฉัน ฉันพยายามทำอะไร ใน SSIS ฉันพยายามอ่านจากไฟล์ CSV และแทรกแถวจากแถวนั้นลงในฐานข้อมูล OLE DB สำหรับสิ่งนั้นฉันได้ทำการตั้งค่าที่ง่ายที่สุดเท่าที่เคยเห็นด้านล่าง Flat File Source - อ่านแถว CSV Derived Column - ขณะนี้ไม่ได้ทำอะไรเลย (เป็นเพียงการทดลอง) Data Conversion - ขณะนี้ไม่ได้ทำอะไรเลย (เป็นเพียงการทดลอง) OLE DB Destination …

5
เหตุใดไฟล์บันทึกข้อมูล bin ของ MySQL ยังคงมีอยู่หลังจากการล้างข้อมูลหรือลบทิ้ง?
ฉันใช้ PURGE BINARY LOGS เช่นเดียวกับ FLUSH LOGS แต่ไดเรกทอรี mysql ยังคงมีไฟล์เหล่านี้: mysql-bin.000025 mysql-bin.000024 mysql-bin.000023 mysql-bin.000022 mysql-bin.000021 mysql-bin.000020 mysql-bin.000019 mysql-bin.index มีเหตุผลทำไมการใช้คำสั่งไม่ทำงาน? ไฟล์เหล่านี้ใช้พื้นที่มาก ฉันต้องการกำจัดพวกเขาอย่างปลอดภัย

2
PostgreSQL: ไม่สามารถเปลี่ยนไดเรกทอรีเป็น / root ได้
ฉันพยายามที่จะคัดลอกตารางplanet_osm_polygonจากฐานข้อมูลหนึ่งไปยังอีกosm testฉันและดำเนินการsu postgrespg_dump ปัญหา:อย่างไรก็ตามฉันได้รับข้อผิดพลาดcould not change directory to "/root"และPassword:ปรากฏขึ้นสองครั้ง! มีวิธีการpg_dumpเมื่อเข้าสู่ระบบในฐานะroot? root@lalaland:~# su postgres postgres@lalaland:/root$ pg_dump -h localhost "osm" --table "public.planet_osm_polygon" | psql -h localhost "test" --table "staging.planet_osm_polygon" could not change directory to "/root" could not change directory to "/root" Password: Password: UPDATE ปัญหา # 2:ปรากฏว่าตารางจะถูกคัดลอกลงในสคีแม้ว่าฉันผ่านธงpublic --table="staging.planet_osm_polygon"ทำไมไม่ได้คัดลอกไปยังคีมาstaging?

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