ฐานข้อมูลภายในแย่ - แทนที่หรือเชยฮาร์ดแวร์ที่มัน


39

ดังนั้น - เรามีฐานข้อมูลภายใน บริษัท ซึ่งเป็นประเภทปกติ: จัดการลูกค้าโทรศัพท์ข้อเสนอการขายและข้อตกลง / รูปแบบของลูกค้า

เป็น Front-End ของ Access 2000 และ SQL Server 2000 Standard back-end เซิร์ฟเวอร์เดียว, Xeon คู่สอง 3.2GHz, 2GB RAM, Windows Server 2003, รับ CPU ประมาณ 40% ตลอดทั้งวัน, แผ่กระจายไปทั่วทั้ง 4 คอร์ที่มองเห็นได้จาก OS (HT)

ฐานข้อมูลส่วนหลังได้รับการออกแบบมาไม่ดีและมีการเติบโตแบบออร์แกนิกมากกว่า 10 ปีขึ้นไปดูแลโดยบุคคลที่มีทักษะน้อยกว่า มันเป็นมาตรฐานที่ไม่ดีและปัญหาที่ชัดเจนบางอย่างรวมถึงตารางที่มีจำนวนหมื่นแถวโดยไม่มีคีย์หลักหรือดัชนีซึ่งใช้อย่างมากในการรวมหลายตารางสำหรับบางส่วนที่ใช้งานหนักที่สุดของระบบ (เช่น แอปพลิเคชันตัวจัดการการโทรที่อยู่บนจอภาพที่สองของทุกคนเป็นเวลา 8 ชั่วโมงต่อวันและเรียกใช้แบบสอบถามที่ไม่มีประสิทธิภาพขนาดใหญ่ทุกสองสามวินาที)

ส่วนหน้านั้นไม่ได้ดีไปกว่านี้มันเป็นระเบียบโดยทั่วไปของหลายร้อยรูปแบบแบบสอบถามที่ซ้อนกันที่บันทึกไว้ SQL ที่ฝังตัวที่เขียนได้ไม่ดีในรหัส VBA, "quirks" เป็นต้น เราได้ตัดสินใจเลือก MDB หนึ่งตัวที่ใช้งานได้ "ดีพอ" และตอนนี้มีนโยบายที่ไม่เปลี่ยนแปลงเนื่องจากเราไม่มีรุ่นใหญ่ใน Access (และไม่มีแผนที่จะจ้างคนใดคนหนึ่ง)

บริษัท กำลังเติบโตอย่างช้าๆจำนวนลูกค้าที่เพิ่มขึ้นการโทร ฯลฯ รวมถึงการเพิ่มขึ้นเล็กน้อยของจำนวนผู้ใช้ที่ใช้งานพร้อมกันและประสิทธิภาพได้แย่ลงอย่างเห็นได้ชัดเมื่อเร็ว ๆ นี้ (รอที่จะย้ายไปมาระหว่างแบบฟอร์ม )

Perfmon พูดว่า:

  • การถ่ายโอนดิสก์ต่อวินาที: ระหว่าง 0 ถึง 30, เฉลี่ย 4
  • ความยาวคิวดิสก์ปัจจุบัน: วนรอบ 1

ผู้สร้างโปรไฟล์ของ SQL Server เห็นแบบสอบถามหลายแสนรายการทุกนาที การใช้งาน CPU บนไคลเอนต์นั้นค่อนข้างเป็นศูนย์ซึ่งบ่งบอกว่ามันกำลังรอคิวรีฝั่งเซิร์ฟเวอร์เพื่อดำเนินการ ฉันได้ใส่ภาระงานนี้ผ่าน DB Engine Tuning Advisor ใช้คำแนะนำกับการสำรองข้อมูลทดสอบ แต่สิ่งนี้ก็ไม่ได้สร้างความแตกต่างมากนัก

โดยวิธีการที่เรามีการผสมผสานของ 100MB และอีเธอร์เน็ตกิกะบิตทั้งหมดในเครือข่ายย่อยเดียว 40 ผู้ใช้งานในสองชั้น

ถึงคำถาม

อย่างที่ฉันเห็นเรามีสองทางเลือกในการแก้ไข / ปรับปรุงสถานการณ์นี้

  • เราสามารถคัดลอกแล้วแทนที่ด้วยระบบ CRM ใหม่ทั้งหมดไม่ว่าจะเป็นแบบ bespoke หรือชิ้นส่วนแบบ bespoke
  • เราสามารถยืดอายุของระบบนี้ได้โดยการโยนฮาร์ดแวร์ลงไป

เราสามารถสร้างระบบ Intel i7 พร้อมหมายเลขประสิทธิภาพที่บ้าคลั่งเพื่อราคาที่ต่ำกว่าการเปลี่ยนซอฟต์แวร์

เมื่อระบบใหม่ได้รับการพัฒนาในที่สุดก็สามารถโฮสต์ในกล่องนี้จึงไม่มีฮาร์ดแวร์เสีย ระบบ CRM ใหม่ยังคงมีการชะลอตัวและปิดอยู่ตลอดเวลา - ฉันไม่เห็นว่าเกิดขึ้นเป็นเวลาอย่างน้อยหนึ่งปี

ความคิดใด ๆ เกี่ยวกับสถานการณ์นี้โดยเฉพาะถ้าคุณอยู่ที่นี่ด้วยตัวคุณเองจะได้รับการชื่นชมมากที่สุด

ขอบคุณ


6
+1 สำหรับคำอธิบายและเนื้อหา นี่คือสิ่งที่เราทุกคนเห็นในชีวิตประจำวัน
เดย์ตันบราวน์

กันที่นี่ เป็นคำถามที่ดีมาก
โจเซฟ Kern

1
เอาต์พุตของ DTA ไม่ได้หมายความว่าคุณได้ดำเนินการเพิ่มประสิทธิภาพฐานข้อมูลถึงขีด จำกัด แล้ว รับผู้เชี่ยวชาญ SQL Server ใน! พวกเขาสามารถทำสิ่งมหัศจรรย์และอาจจะทำให้ฮาร์ดแวร์ที่มีอยู่ของคุณไม่กี่ปีของชีวิตอีก
นิค Kavadias

คำตอบ:


20

ฉันจะไม่เห็นด้วยกับทุกคนที่นี่ เชยฮาร์ดแวร์บางอย่างที่มัน มันถูกเร็วง่ายและจะซื้อเวลาที่จำเป็นในการใช้โซลูชัน CRM ที่เหมาะสม เหตุผลที่ฉันเรียกร้องบางสิ่งบางอย่างที่เป็นคำสาปแช่งให้กับทุกคนไม่เพียง แต่ในบอร์ดนี้เท่านั้น แต่เป็นสแต็คโอเวอร์โฟลว์เช่นกันเพราะฉันเป็นผู้จัดการโครงการ / ผู้จัดการและอยู่ในตำแหน่ง "ธุรกิจ" มาระยะหนึ่งแล้ว อยู่ในเครื่องหมายคำพูดเนื่องจากความเกลียดชังของฉันสำหรับคำ) ตามคำอธิบายซอฟต์แวร์ของคุณจะใช้เวลาเกือบหนึ่งปีในการสร้างอย่างอื่น เพียงแค่ค้นหา / จัดทำเอกสารกฎธุรกิจ / นิสัยใจคออาจใช้เวลา 2 เดือน มันจะมีราคาแพงอย่างไม่น่าเชื่อในการพัฒนา โดยเฉพาะอย่างยิ่งเมื่อเปรียบเทียบกับราคาของเซิร์ฟเวอร์ที่ถูกหลอก

ฉันกำลังจะจัดทำชุดแอปพลิเคชันเว็บให้กับ บริษัท ด้วยเหตุผลนั้นเอง แผนกไอทีภายในจะไม่ย้ายไปที่ฮาร์ดแวร์ที่ดีกว่าเพราะพวกเขาต้องการพัฒนาพวกเขาบนแพลตฟอร์มใหม่ ราคานั้นประมาณสามเท่าของค่าใช้จ่ายในการย้ายไปยังฮาร์ดแวร์ใหม่ ไม่พูดถึงเกินไปว่า บริษัท อาจไม่ได้ต่อสัญญาในปี


คำถามของเขาคือ "NewHardware หรือ NewCRM" ไม่ใช่ "NewHardware และ NewCRM" ... และจริงๆแล้วคุณไม่ได้ไปกับบอร์ด (ซื้อ CRM ใหม่) มากเท่ากับตั้งคำถามใหม่ (ย้ายจาก OR ไปยัง AND)
โจเซฟ Kern

ความคิดเห็นอื่น ๆ ไม่กี่ที่นี่พูดว่า "ทำทั้งสองอย่าง" หากเขาทำทั้งสองอย่างแล้วก็ไม่มีคำถาม แต่เขาจะทำทั้งสองอย่างได้ไหม?
โจเซฟ Kern

โจเซฟฉันตอบด้านล่างแบบเต็ม แต่ - ฮาร์ดแวร์ใหม่รวมถึงการอัพเกรดเป็นเซิร์ฟเวอร์รุ่นล่าสุดเพิ่มเติมบวกการเพิ่มประสิทธิภาพของแบบสอบถามและการเพิ่มดัชนีอาจมีประสิทธิภาพมากที่สุด คุณไม่ต้องการมอบข้อได้เปรียบทางการแข่งขันที่ CRM แบบกำหนดเองมอบให้กับธุรกิจขนาดเล็กที่กำลังเติบโต
Karl Katzke

ฉันทำทั้งสองอย่างถ้าคุณอ่านมันทำให้ฮาร์ดแวร์ทำงานต่อไปในขณะที่ทำงานซ้ำ ขึ้นอยู่กับทรัพยากรที่ต้องการซึ่งอาจมี RAM อยู่สองสามร้อยดอลลาร์ในขณะที่ปรับเปลี่ยนบางส่วน แสดงปัญหาที่เขามีเมื่อทิ้งมันและไปกับสิ่งใหม่ทั้งหมดไม่ว่าจะเป็นระบบการเขียนที่กำหนดเองหรือเปิดกุญแจออกจากกล่อง
SpaceManSpiff

+1 สำหรับการดูภาพรวม: มันจะมีค่าใช้จ่ายน้อยกว่าในการขว้างฮาร์ดแวร์ที่มันมากกว่าที่จะโยนนักพัฒนา / ไอทีลงไป นอกจากว่าคุณจะสามารถหา CRM แบบ off-the-shelf ที่ทำทุกสิ่งที่คุณต้องการค่าใช้จ่ายน้อยกว่าเซิร์ฟเวอร์และจะใช้เวลาไม่นานในการโยกย้ายไปหานั่นคือ
เออร์นี่

14

คุณอาจไม่จำเป็นต้องทำเช่นกัน ข้อเสนอแนะของฉันคือการเพิ่มดัชนี / คีย์ลงในตาราง

ตารางที่มีหลายหมื่นแถวโดยไม่มีคีย์หลักหรือดัชนีซึ่งใช้อย่างมากในการรวมหลายตาราง

ก่อนที่จะใช้จ่ายเงินหรือเวลามากใช้เวลาสองสามชั่วโมงและเพิ่มดัชนี (หรือคีย์หลักถ้าคุณทำได้) ลงในตารางใด ๆ ที่เกี่ยวข้องกับการรวมเหล่านั้น ... โดยเฉพาะสำหรับคอลัมน์ที่ใช้ในส่วนคำสั่งที่ คุณสามารถปรับปรุงประสิทธิภาพได้อย่างง่ายดายเพียง 10 เท่าในเวลาเพียงไม่กี่ชั่วโมง


3
+1 หรือปัจจัย 100 - ดัชนีที่เหมาะสมจะไม่ถูกประเมินต่ำเกินไป ...
Oskar Duveborn

8

การขาดดิสก์ I / O หมายความว่าแบบสอบถามถูกป้อนส่วนใหญ่จาก RAM หากคุณ 'ทันใด' มีตารางร้อนของคุณไม่พอดีกับ RAM อีกต่อไปและเซิร์ฟเวอร์เริ่มทำงานดิสก์คุณอาจอยู่ในสภาพที่ไม่ดี 2GB หรือ RAM ไม่มากในวันนี้ แต่ย้อนกลับไปในยุค SQL2000 มันจะมีขนาดใหญ่มาก ฉันเดาว่าปริมาณข้อมูลที่แอปพลิเคชันจัดการตามปกติมีขนาดเล็กกว่า RAM ที่คุณมี คุณอาจต้องการดูจำนวนพื้นที่ "ใช้แล้ว" ในไฟล์ข้อมูล นี่จะช่วยให้คุณทราบว่า RAM อาจใช้ฐานข้อมูลมากน้อยเพียงใด SQL Server ไม่ได้เก็บข้อมูลที่ไม่ต้องการใน RAM แต่มันยากที่จะรู้ว่าตารางใดที่จะใช้และเมื่อใด

การทำไฮเปอร์เธรดไม่ได้เป็นประโยชน์กับ SQL Server คุณอาจได้ประสิทธิภาพที่ดีขึ้นกว่าเดิม เป็นการยากที่จะทดสอบเพราะการเปิดและปิดต้องใช้การรีบูตและเป็นปัญหาใหญ่ในเซิร์ฟเวอร์ที่ใช้งานจริง

"หลายร้อยหลายพันข้อความค้นหาต่อนาที" แปลเป็นหลายพันข้อความค้นหาต่อวินาที ฟังก์ชั่นนี้ค่อนข้างยุ่ง แต่ทราฟฟิกส่วนมากอาจเป็นเพียงเคอร์เซอร์ดึงข้อมูลจาก Access การเข้าถึงไม่ดีอย่างยิ่งในการดึงชุดผลลัพธ์จาก SQL อย่างมีประสิทธิภาพ คุณอาจได้รับประสิทธิภาพที่ดีขึ้นโดยการปิดการตั้งค่าการขนาน SQL Server

คุณต้องการค้นหาการบล็อก การขว้างปาฮาร์ดแวร์ที่มีปัญหาการบล็อกไม่ได้สร้างความหวังที่จะปรับปรุงอย่างมากเสมอไป หากมีการบล็อกไม่มากนักและ RAM มีความพึงพอใจมากกว่าการใช้งานดิสก์คุณก็ต้องพึ่งพาหน่วยความจำของตัวประมวลผลและความสามารถในการดึงข้อมูลผ่านช่องทางหน่วยความจำ ในกรณีนี้ฮาร์ดแวร์ที่เร็วกว่าควรให้การปรับปรุงที่ดี หากคุณกำลังรีบ (ที่จะผ่านปัญหานี้) และเติบโตช้านั่นอาจจะดีพอ

ในฐานะที่เป็นโซลูชันการเพิ่มฮาร์ดแวร์ไม่ได้ปรับขนาดเช่นเดียวกับการปรับปรุงฐานข้อมูล หากคุณเติบโตอย่างรวดเร็วคุณอาจพบว่าฮาร์ดแวร์ใหม่ของคุณกำลังดิ้นรน ความคิดอีกอย่างคือแอปพลิเคชันที่ประสบความสำเร็จดึงดูดผู้ใช้ หากแอปพลิเคชันตอบสนองได้มากขึ้นผู้ใช้อาจมีแนวโน้มที่จะเรียกใช้รายงานมากขึ้นและต้องดำเนินการมากกว่าที่พวกเขาต้องการหากพวกเขาต้องการไปดื่มกาแฟในขณะที่รอให้รายงานเสร็จสิ้น

หากสคีมาฐานข้อมูลไม่ดีจริง ๆ คุณอาจสามารถรับประสิทธิภาพบางอย่างได้ง่ายๆโดยดูที่การสร้างดัชนีในตาราง ตั้งสมาธิกับตารางที่คุณรู้จักสอบถามบ่อยๆ คุณสามารถใช้ Profiler เพื่อดูข้อความค้นหาที่ทำงานกับเซิร์ฟเวอร์เพียงบอกให้ค้นหาข้อความค้นหาที่อ่านข้อมูลจำนวนมาก (เช่น 100,000 หน้า) จากนั้นทำงานกับข้อความค้นหาที่อ่านไม่มาก คุณพูดถึงว่าบางตารางไม่มีคีย์ มีคีย์ธรรมชาติในข้อมูลเพียงแค่ไม่บังคับใช้โดยข้อ จำกัด หรือดัชนีที่ไม่ซ้ำกัน?

ตารางมีดัชนีกลุ่มหรือไม่ การขาดการจัดทำดัชนีของคลัสเตอร์สามารถทำให้เกิดผลรองทุกประเภท

มีดัชนีที่ไม่เป็นคลัสเตอร์จำนวนมากมีหลายคอลัมน์หรือไม่? นี่เป็นความพยายามที่จะสร้างดัชนีครอบคลุมหลาย ๆ ตัวแทนที่จะใช้กลยุทธ์การจัดทำดัชนีที่มีประสิทธิภาพมากขึ้น SQL Server สามารถสร้างดัชนีที่ครอบคลุมได้อย่างมีประสิทธิภาพในระหว่างการสืบค้นถ้ามันสมเหตุสมผลที่จะทำเช่นนั้นและมีการสนับสนุนดัชนีที่ไม่เป็นคลัสเตอร์และคลัสเตอร์

สุดท้ายขอให้คุ้มค่า: กำลังทำการบำรุงรักษา (ทำดัชนีใหม่และ / หรืออัปเดตสถิติ) ในตารางหรือไม่


+1 พยายามค้นหาคอลัมน์ในตารางที่ใช้บ่อย ๆ เพื่อจัดทำดัชนีอย่างถูกต้องด้วยโชคเล็กน้อยมันอาจจะง่ายและรวดเร็วในการแก้ไขหากไม่ใช้เวลาน้อยก็ไม่ควรมีค่าใช้จ่ายสูงหากคุณหรือ DBA / DBA ใด ๆ ผู้รับเหมาให้ขึ้นและย้ายต้นถ้ามันไม่ได้มีลักษณะเหมือนมี bullet เงินไปในกองไฟที่มัน ...
Oskar Duveborn

การเข้าถึงไม่ได้ "โดยเฉพาะอย่างยิ่งที่การดึงชุดผลลัพธ์อย่างมีประสิทธิภาพจาก SQL" เว้นแต่ว่าแอพนั้นได้รับการออกแบบมาไม่ดี Jet / ACE สามารถสร้างสมมติฐานที่ไม่ดีเมื่อส่งการร้องขอไปยัง SQL Server หนึ่งในนั้นก็คือ Jet / ACE แบ่งการอัพเดทเป็นหนึ่ง UPDATE ต่อแถว นี่เป็นเรื่องที่แย่มากจากมุมมองด้านประสิทธิภาพ แต่ก็พยายามเป็นพลเมืองที่ดีของเซิร์ฟเวอร์เพราะจะทำให้เซิร์ฟเวอร์สามารถซีเรียลไลซ์และเชื่อมต่อคำขอกับผู้ใช้รายอื่น ๆ สิ่งนี้สามารถแก้ไขได้โดยการย้ายฝั่งเซิร์ฟเวอร์การดำเนินการไปที่ SPROC
David W. Fenton

แอพการเข้าถึงส่วนใหญ่ที่ฉันเห็นไม่ได้ออกแบบมาพวกเขาแค่เรียงลำดับจากที่เกิดขึ้นแล้วพัฒนา 'แบบอินทรีย์' ฉันตกเป็นเหยื่อของ Access ที่ได้รับชุดผลลัพธ์ขนาดใหญ่แบบทีละแถวโดยมีปริมาณการใช้งานเครือข่ายและเวลาแฝงที่มาพร้อมกับพฤติกรรมดังกล่าวหลายครั้งที่ฉันหยุดนับ ฉันไม่แน่ใจ 100% ว่าสิ่งนี้ไม่ได้รับการแก้ไขด้วย Access รุ่นใหม่ที่อาจใช้อะไรบางอย่างเช่น SNAC แทนที่จะเป็น Jet / Ace หรือถ้านี่เป็นสิ่งที่สามารถแก้ไขได้โดยผู้เข้าถึงที่มีความรู้มากขึ้น แต่เป็นสิ่งที่ ฉันได้เห็นบ่อยครั้ง
darin strait

6

นี่เป็นคำถามทางธุรกิจไม่ใช่คำถามทางเทคนิค

ในฐานะเจ้าของธุรกิจ: ระบบมีกลยุทธ์ในการดำเนินธุรกิจอย่างไร กลยุทธ์ที่น้อยกว่ายิ่งฉันดูแลและแก้ไขน้อยลงและเงินใด ๆ ที่ใช้ไปคือเงินที่ฉันสามารถใช้ในที่อื่นเพื่อสร้างธุรกิจของฉัน

คอมพิวเตอร์ชาวบ้านทำให้ฉันกลัวเพราะพวกเขาทั้งหมดอยู่ในห้องขนาดใหญ่ & โต้แย้งเกี่ยวกับการออกแบบ & ค่าใช้จ่ายให้ฉันโชคลาภ ให้ระบบทำงานต่อไป! ไม่ว่าจะหมายถึงการปรับแต่งประสิทธิภาพ (โดยไม่ต้องเปลี่ยนสถาปัตยกรรมใหม่) หรือทิ้งฮาร์ดแวร์เพิ่มเติมไว้ที่นี่มันเป็นสิ่งสำคัญถ้ามันหยุดทำงาน

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

ในฐานะพนักงานไอที: ฉันสามารถเป็นซูเปอร์ฮีโร่ที่นี่และช่วยชีวิต บริษัท ด้วยการหลีกเลี่ยงหายนะที่กำลังจะเกิดขึ้นโดยการปรับนรกให้เหมาะสมจากสิ่งนี้! ผู้จัดการของฉันจะอาบน้ำให้ฉันด้วยของขวัญ & คำชมเพราะฉันจะช่วยให้ บริษัท หลายพัน


2
+1 ที่เป็นคนตลกขณะตอบคำถาม
เออร์นี่

2

ฉันพูดว่าทำทั้งสองอย่าง

ตอนนี้ CPU ของคุณอยู่ที่ 40% หรือมากกว่านั้นที่คุณพูด? คุณกำลังบ่น (มาก) ของผู้ใช้หรือยัง ถ้าไม่ใช่คุณยังมีห้องหายใจ หน่วยความจำเพิ่มเติมอาจเพียงพอที่จะทำในขณะที่

คำถามเกี่ยวกับวิธีการเดินทางคุณมีนักพัฒนาซอฟต์แวร์ในบ้านหรือไม่? หากคำตอบคือไม่ใช่อย่าพยายามทำซ้ำ คุณจะพบว่าคุณอยู่ที่ไหน

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

จนกว่า บริษัท จะมีความสัมพันธ์กับพวกเขาก็เป็นลูกค้าของตัวเองและต้องการให้ทรัพยากรในโครงการภายในเหมือนกันคุณจะจบลงอย่างแน่นอนว่าคุณอยู่ที่ไหน เมื่อไปถึงที่นั่นทำอย่างนั้นมีเสื้อเชิ้ตทั้งตัว

ดังนั้นหากคุณไม่สามารถทำได้อย่างถูกต้องคุณจะมีสองทางเลือกให้เลือกเพราะคุณจะต้องทำให้พนักงานต้องเกลียดกับระบบที่คุณซื้อ หรือมันจะสามารถปรับแต่งได้และคุณจะต้องใช้เวลา PROJECT ในการปรับแต่งมัน

หรือ Refactor สิ่งที่คุณมี โปรดจำไว้ว่าผู้คนจะคาดหวังความสมบูรณ์ของฟังก์ชั่นที่เหมือนกันทุกประการเมื่อมีสิ่งใหม่เข้ามาดังนั้นนั่นเป็นสาเหตุว่าทำไมคุณต้องทำทุกอย่างในเวลาเดียวกัน หากคุณพิจารณาปัจจัยอีกครั้งคุณมีโอกาสคิดออกว่ามันทำงานอย่างไรและจากนั้นจึงเปลี่ยนการเปลี่ยนแปลงที่คุณวางแผนไว้เป็นโครงการย่อยขนาดเล็กจำนวนมาก

หากไม่เห็นระบบฉันน่าจะเห็นว่าการทำให้เป็นมาตรฐานมากที่สุดเท่าที่จะทำได้ในแบ็คเอนด์ย้าย SQL ให้มากไปเป็นโพรบที่เก็บไว้ จากนั้นสร้างส่วนหน้าใหม่ทั้งจากแบบฟอร์ม C # หรือ webapp หากคุณสามารถกำจัดตรรกะทางธุรกิจและ SQL ออกจากส่วนหน้าได้มันจะง่ายขึ้นในภายหลัง โดยการรักษาสิ่งที่คุณทำกับโครงการขนาดเล็กถ้ามันถูกผลักออกไปทุกที่ทุกเวลาหรือหยุดคุณจะมีความคืบหน้าที่จะใช้


2

บางคำตอบที่ดีที่นี่แล้ว - แต่ฉันอาจจะชี้ให้เห็นว่า (สมมติว่ามีผู้พัฒนาบ้าน) งานจำนวนเล็กน้อยจะมีผลกระทบอย่างมาก - เพิ่มคีย์หลัก (คุณไม่ควรเปลี่ยนคำถามทั้งหมดของคุณเป็น ใช้พวกเขา) เพิ่มดัชนีไปยังเขตข้อมูลที่คุณใช้และปรับแต่งแบบสอบถามของคุณเล็กน้อยและคุณสามารถเห็นการเพิ่มขึ้นอย่างมาก ซื้อ RAM ให้ตัวเองตอนนี้ซื้อเวลาและห้องที่คุณต้องการแก้ไขจากนั้นไปทำงาน

ในเรื่องของ "แก้ไขหรือทิ้ง" ถ้าคุณสมบัติของระบบโดยทั่วไปทำงานให้คุณและทำในสิ่งที่คุณต้องการอย่าเขียนวงล้อใหม่ หากผู้ใช้ของคุณต้องทำยิมนาสติกเพื่อใช้งานสิ่งนี้เพราะมันไม่ตรงกับความต้องการของคุณก็ไม่ต้องใช้ความพยายามเลย


2

อืม ... นี่มันผ่านไปซักพักแล้ว แต่ข้าคิดว่าข้าจะบันทึกผลลัพธ์ที่นี่

ในที่สุดฉันก็ก้าวผ่าน VBA ทีละบรรทัดเพื่อจัดการกับปัญหาอื่น ตอนนั้นฉันก็รู้ว่ามีการโทรเพื่อดึงข้อมูลจำนวนแถวกำลังบล็อก 20-30 วินาที

เมื่อฉันขุดลงไปพวกเขาฉันพบว่า rowset ขึ้นอยู่กับแบบสอบถาม MS Access

นั่นคือการเลือกข้อมูลจากแบบสอบถามการเข้าถึงอื่น

นั่นคือการเลือกข้อมูลจากแบบสอบถามการเข้าถึงอื่น

ซึ่งดูเหมือนว่าพวกเขาจะถูกลากและวางลงด้วยกันโดยใช้ตัวออกแบบคิวรี

ฉันไปถึงจุดปวดของผู้ใช้ครึ่งโหลด้านบนและพบว่าโดยไม่ล้มเหลวพวกเขาทั้งหมดเหมือนกัน

ดังนั้นฉันจึงลบสแต็กของเคียวรีที่ถูกโยงทั้งหมดและแทนที่แต่ละรายการด้วยเคียวรี pass-through เดียวซึ่งสามารถเขียนใน T-SQL และดำเนินการโดยตรงบนเซิร์ฟเวอร์

การปรับปรุงมีมากมายอย่างมากในทุกกรณีโดยไม่ล้มเหลวและไม่ต้องรอคิวรีใด ๆ อีกต่อไป

แล้วฉันก็ลาออกจาก บริษัท ไม่รู้เลยว่ามันยังอยู่ที่นั่น ... แต่ฉันไม่ควรพลาด


ไม่มีอะไรผิดปกติกับแบบสอบถามที่ซ้อนกัน และที่จริงแล้วสิ่งที่สำคัญจริงๆไม่ใช่สิ่งที่อยู่ใน QueryDefs ต้นทางใน Access แต่สิ่งที่ Jet / ACE สิ้นสุดลงส่งไปยังเซิร์ฟเวอร์ซึ่งคุณสามารถค้นหาได้โดยใช้ SQL Profiler ใช่เป็นไปได้ที่จะเขียนข้อความค้นหาที่ไม่ดีใน Access ที่ไม่มีประสิทธิภาพและทำให้ช้าลง แต่ก็เป็นไปได้ในทุกฐานข้อมูล!
David W. Fenton

1

ฉันโพสต์คำตอบแยกต่างหากแทนที่จะเพียงต่อท้ายคำตอบของเดย์ตันเนื่องจากมีค่าใช้จ่ายที่ไม่ถูกนำมาพิจารณาโดยคนสองสามคนแรกที่โพสต์คำตอบ: ค่าใช้จ่ายในการอบรมผู้ใช้และค่าใช้จ่ายในการเปลี่ยนกระบวนการทางธุรกิจของคุณ โปรแกรมซอฟต์แวร์ใหม่ มิฉะนั้นสิ่งที่เขาพูด

หนึ่งในเหตุผลหลักที่ บริษัท พัฒนาซอฟต์แวร์ของตนเองคือพวกเขามีกระบวนการทางธุรกิจที่ไม่ตรงกับสิ่งที่อยู่ในตลาด ซึ่งเป็นสิ่งที่ดี - กระบวนการทางธุรกิจของแต่ละ บริษัท เป็นส่วนสำคัญของมูลค่าที่ บริษัท นำมาสู่ตารางและเป็นข้อได้เปรียบในการแข่งขันที่ บริษัท มีอยู่ในตลาดที่เหลือ ในการแทนที่ซอฟต์แวร์ด้วยสิ่งทั่วไปที่ต้องการให้คุณฝึกฝนคนใหม่และเสียสละความได้เปรียบในการแข่งขันหรือคุณต้องกำหนดโซลูชันเองเพื่อให้ตรงกับกระบวนการทางธุรกิจของคุณ ทั้งสองมีราคาแพงและใช้เวลานาน ในฐานะที่ปรึกษาทางธุรกิจและดูแลระบบฉันได้เห็นค่าใช้จ่ายเหล่านี้ฆ่า บริษัท ขนาดเล็กด้วยตัวเอง

ดูเหมือนว่าคุณมีข้อ จำกัด เกี่ยวกับตัวประมวลผล / ซอฟต์แวร์ ฉันจะทำสองสิ่ง - เพิ่มดัชนี (ภายในขีด จำกัด ) โดยเฉพาะคอลัมน์ที่ไม่ได้ใช้ และฉันจะโยนชุดประมวลผลที่เร็วที่สุดที่คุณสามารถทำได้เพราะดูเหมือนว่าคุณกำลังผูกพันอยู่หากคุณไม่มีไดรฟ์จำนวนมากที่อ่านได้อย่างสมบูรณ์

(นอกจากนี้ฉันจะอัปเกรดรุ่นเซิร์ฟเวอร์ให้มากที่สุดเท่าที่จะเป็นไปได้เมื่อคุณได้รับสิ่งนี้ Access 2000 และ SQL Server 2000 จะมีอายุสิบปีนั่นคือ OLD ในปีคอมพิวเตอร์!)


1

สิ่งนี้ต้องการการปรับโครงสร้างใหม่ทั้งหมด (การปรับโครงสร้างใหม่) สร้างระบบใหม่จากพื้นดินขึ้น สิ่งนี้จะช่วยคุณประหยัดในระยะยาว (ค่าใช้จ่ายในการบำรุงรักษา) ในระหว่างนั้นให้โยนฮาร์ดแวร์ลงไป ฉันคิดว่าคำถามนี้เป็น "กรณีศึกษาทางธุรกิจ" มากกว่าคำถามทางเทคนิค ช่างฉลาดหลักแหลมคำตอบก็คือ "ชัคพลังมากขึ้น" นักธุรกิจสร้างระบบใหม่!


1

คำตอบทางเทคนิค:

คุณมีข้อเสนอแนะมากมายที่ระบุถึงคีย์หลักและการจัดทำดัชนีควรได้รับการตรวจสอบอย่างละเอียด การเข้าถึงยังชอบการใช้คอลัมน์ SQL Server TimeStamp aka RowVersion ในแต่ละตารางเนื่องจากจะช่วยลดเวลาได้มากที่ Access ใช้ในการตัดสินใจว่ามีการเปลี่ยนแปลงระเบียนหรือไม่เมื่อมีการปรับปรุงระเบียน

คำตอบทางธุรกิจ:

โซลูชัน CRM ใหม่เป็นงานที่ต้องฝึกอบรมมากมายและคุณจะไม่มีวันจบสิ้นด้วยระบบที่เหมาะสมกับความต้องการทางธุรกิจของคุณ

ฉันจะหาคนเข้าถึงที่ดีซึ่งมีความรู้มากใน SQL Server และทำให้พวกเขาใช้เวลา 3 หรือ 6 เดือนในการทำให้ตารางกลับมาปกติและแก้ไขจุดปวดของผู้ใช้ ตรวจสอบให้แน่ใจว่าบุคคลนั้นทำงานบนพื้น saem ในฐานะผู้ใช้ของคุณแม้ว่าจะอยู่ในพื้นที่เงียบสงบและสามารถเข้าถึงได้ แม้ว่าจะไม่สามารถเข้าถึงได้มากเกินไป นักพัฒนาไม่ชอบการหยุดชะงัก S


สิ่งที่เขาพูด - สิ่งที่ดีที่สุดสำหรับเจ้าชู้ในความคิดของฉันคือการเพิ่มดัชนีก่อนจากนั้นจึงขว้างฮาร์ดแวร์ที่มันแล้วรับนักพัฒนา Access ระดับผู้เชี่ยวชาญจากภายนอกมาวิเคราะห์แอปและหาสิ่งที่คอขวด เป็น อาจเป็นสิ่งที่ง่ายมาก แต่การเดิมพันของฉันคือคุณสามารถทำงานให้เสร็จสมบูรณ์โดย Access guru สำหรับสิ่งที่ฮาร์ดแวร์เซิร์ฟเวอร์ระดับสูงต้องเสียค่าใช้จ่าย (หรือน้อยกว่า)
David W. Fenton

0

จากข้อมูลที่ระบุฉันจะแทนที่ระบบ โดยเฉพาะอย่างยิ่งกับ CRM อื่นที่ช่วยให้การทำงานที่ยืดหยุ่นกับระบบอื่น ๆ (ที่จะประนีประนอมของคุณERP IS )

ส่วนที่ยากที่สุดคือการโน้มน้าวให้ฝ่ายบริหารและผู้ใช้จำเป็นต้องมีการอัพเกรด

การจัดการ

แสดงความกังวลของคุณเกี่ยวกับปัญหาทางเทคนิคประสิทธิภาพต่ำกลัวความล้มเหลวของไบเซนไทน์ ฯลฯ จากนั้นนำเสนอ CRM ทางเลือก 2 รายการ พูดคุยเกี่ยวกับการรวมธุรกิจกลยุทธ์ ERP โดยรวมสำหรับธุรกิจและที่สำคัญที่สุดสิ่งนี้จะทำให้พนักงานมีประสิทธิผลและผลกำไรมากขึ้น ใช้กรณีศึกษา ทำสิ่งนี้ไม่เกิน 15 นาที (เว้นแต่พวกเขาต้องการข้อมูลเพิ่มเติม) จากนั้นคุณต้องโน้มน้าวผู้ใช้

ผู้ใช้

แผนการฝึกอบรม (ซึ่งผู้ขายอาจจัดหา [และการจัดการจะต้องรับรอง]) การสื่อสารอย่างต่อเนื่องกับผู้ใช้ของคุณสูงสุด 20% (ผู้ใช้ขั้นสูงผู้ที่ก่อให้เกิดปัญหา) และความมุ่งมั่นอย่างแรงกล้าที่จะทำให้ระบบทำงานได้ 100% สำหรับเดือนแรก (เดือนแรกจะสร้างหรือทำลาย IS ใหม่ใด ๆ )

มีผลิตภัณฑ์ CRM จำนวนมากออกมีเลือกที่เหมาะสมกับความต้องการทางธุรกิจของคุณ


0

การขว้างปาฮาร์ดแวร์ที่มันสนับสนุนการออกแบบและการจัดการที่แย่ลงเรื่อย ๆ จนกว่าระบบจะน่าสงสารดังนั้นมันจะไม่ทำงานได้ดีบนฮาร์ดแวร์ล่าสุดและยิ่งใหญ่ที่สุด ถึงเวลาที่จะดูการใช้งานที่ดีขึ้น ก่อนวิเคราะห์สิ่งที่จำเป็น เมื่อคุณเข้าใจข้อกำหนดอย่างครบถ้วนแล้วคุณจะสามารถเริ่มมองหาวิธีที่ดีที่สุดในการปรับใช้ เมื่อคุณแน่ใจว่าคุณเข้าใจข้อกำหนดเริ่มมองว่ามันดีกว่า / คุ้มค่ากว่าในการแก้ไขสิ่งที่คุณมีหรือเริ่มจากศูนย์อาจมีบางอย่างที่แตกต่างออกไปโดยสิ้นเชิง


0

ในระยะยาวคุณน่าจะเป็นการดีที่สุดที่จะทำซ้ำฐานข้อมูล การขว้างฮาร์ดแวร์มากขึ้นจะช่วยแก้ปัญหาของคุณได้สักพัก แต่ถ้าคุณยังคงใช้มันต่อไปคุณจะต้องทิ้งฮาร์ดแวร์เพิ่มอีกสักครู่

โดยทั่วไปเมื่อมีปัญหาด้านประสิทธิภาพคุณจะเห็นสิ่งต่าง ๆ เช่นคอขวดของ i / o บนฮาร์ดดิสก์ / RAID, การทำลายฐานข้อมูลเป็นต้น ... แต่สำหรับสิ่งที่คล้ายกับการที่คุณต้องใช้ฐานข้อมูลเพื่อให้ได้ประโยชน์จากมัน แอปพลิเคชันของคุณจะไม่สามารถปรับขนาดได้

ในระยะยาวการทำซ้ำฐานข้อมูลและซอฟต์แวร์ส่วนหน้าเพื่อสะท้อนความต้องการทางธุรกิจของคุณให้ดีขึ้นจะช่วยให้คุณทำงานได้ดีขึ้นในระยะยาว ผู้ใช้ของคุณจะขอบคุณฮาร์ดแวร์ของคุณจะใช้งานได้นานขึ้นและจะประหยัดเงินได้มากขึ้นในระยะยาวกว่าการขว้างฮาร์ดแวร์ gargantuan ที่มีปัญหา


0

จากคำอธิบายของคุณการสร้างระบบ bespoke ใหม่ทั้งหมดนั้นไม่มีจุดหมาย - คุณจะต้องจบลงที่จุดเริ่มต้นของคุณหรืออาจยิ่งแย่ไปกว่าตอนนี้ ดังนั้นหากคุณไม่สามารถโน้มน้าวให้ใครบางคนซื้อโซลูชันของบุคคลที่สามทางออกที่ดีที่สุดของคุณคือการปรับโครงสร้างให้ดีที่สุดเท่าที่จะทำได้และโยนฮาร์ดแวร์ลงไป

ฉันจะบอกว่าคุณควรทำสองสิ่ง: 1) การวิเคราะห์ประสิทธิภาพบนเซิร์ฟเวอร์ SQL คุณดูเหมือนจะระบุว่าฝั่งเซิร์ฟเวอร์เป็นแหล่งที่มาของความล่าช้าดังนั้นตอนนี้คุณต้องรู้ว่าคำค้นหาใดที่ล้าหลังและทำไม ในทุกโอกาสคุณสามารถค้นหาข้อความค้นหาฮอตสปอตเพื่อเพิ่มประสิทธิภาพที่จะให้ประโยชน์อย่างมากกับคุณ เฮ้ถ้าคุณมีลูกค้าที่อัปเดตทุก ๆ สองสามวินาทีดูว่าคุณสามารถลดอัตราการอัปเดตของพวกเขาได้หรือไม่ (รายการบนหน้าจอจำเป็นต้องอัปเดตทุก ๆ 5 วินาทีหรือไม่ 30 จะโอเคไหมถ้าไม่ประมาณ 15 ) สิ่งที่โง่เช่นการเพิ่มตัวจับเวลาการรีเฟรชอาจช่วยให้คุณประหยัดค่าใช้จ่ายได้มากหากคุณสามารถหลีกเลี่ยงได้

2) โยนฮาร์ดแวร์เพิ่มเติมที่มัน โดยเฉพาะอย่างยิ่งโยน ram จำนวนมากที่มัน คุณต้องการหน่วยความจำมากมายที่ฐานข้อมูลพอดีกับ RAM ทั้งหมด จับตาดูระบบปฏิบัติการและเวอร์ชั่นซอฟต์แวร์ของคุณ ( ดูเหมือนจะมีกฎเกณฑ์มากมายสำหรับ Windows รุ่นต่าง ๆ รวมถึงฮาร์ดแวร์ที่รองรับด้วย) หากคุณสามารถโน้มน้าวใจตัวเองได้ว่าแกนประมวลผลจะช่วยได้มากขึ้นให้โยนซีพียูและคอร์จำนวนมากเท่าที่คุณจะทำได้


0

คุณได้กล่าวถึง RAM และโปรเซสเซอร์ แต่ไม่ใช่ดิสก์ ฉันยอมรับว่าเกือบสิบปีแล้วที่ฉันได้จัดการกับ SQL Server ของ MS แต่มันผูกพันกับดิสก์ได้มากเท่ากับฐานข้อมูลอื่น ๆ ถ้ามันไม่เหมาะกับทุกอย่างในหน่วยความจำ

ฉันอาจลองเติมเครื่องที่มี RAM ให้มากที่สุดเท่าที่จะทำได้ - จากนั้นฉันต้องตรวจสอบให้แน่ใจว่ามีการเขียนบันทึกลงในดิสก์ที่ไม่ได้ใช้สำหรับตารางหรือดัชนี จากนั้นฉันจะพยายามทำให้แน่ใจว่าไม่มีตารางใด ๆ ที่มีดัชนีอยู่บนแกนหมุนเดียวกัน

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


0

ก่อนอื่นฉันเห็นด้วยกับ Kyle Hodgson และเพิ่ม PKs มีราคาถูก (เวลาเท่านั้น) และคุณอาจเห็นข้อความค้นหาที่เพิ่มขึ้น สิ่งที่เกี่ยวกับดัชนีในคอลัมน์เข้าร่วมในการค้นหา 10 อันดับแรกที่น่าเกลียดที่สุด การสแกนตารางอยู่ที่ไหน

ประการที่สองสิ่งที่เกี่ยวกับการตัดแต่งข้อมูลในฐานข้อมูล? มีการส่งคืนแถวจำนวนมากในคิวรีมากกว่าที่จำเป็นจริงๆหรือไม่? ฉันเห็นด้วยกับข้อเสนอแนะของ Kyle เกี่ยวกับ RAM (อีกสอง GB)

ใส่ทั้งหมดนี้ลงในบทความของคุณ (โจเซฟเคอร์น) เกี่ยวกับสิ่งที่คุณเสนอให้ระหว่างกาลในขณะที่วางแผนอนาคต ถามผู้บริหารและผู้ใช้ว่าจะเกิดอะไรขึ้นกับองค์กรถ้าแอพ CRM craters ปัจจุบันและไม่พร้อมใช้งาน บางทีนั่นอาจช่วยให้พวกเขาคิดเกี่ยวกับอนาคต


0

รับฮาร์ดแวร์!

ไม่เพียง แต่จะมีราคาถูกมากในตอนนี้ถ้าคุณไปหาซีรีส์ชิป Xeon 55xx มันจะส่งเสียงร้องสำหรับทุกสิ่งที่คุณสามารถโยนได้

มันเป็นเพียงความเสี่ยง / รางวัล - คุณสามารถใช้จ่ายเงินและเวลามากมายเพื่อทำให้ DB ดีขึ้นหรือซื้อในแบบของคุณที่รวดเร็วและถูกกว่า


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