SQL Server Express สำหรับฐานข้อมูลการผลิต?


14

เรากำลังจะเปิดตัวแอปพลิเคชันธุรกรรมทางเว็บคู่ / ภายในที่ลูกค้าแต่ละรายมีฐานข้อมูลของตนเอง แต่ละฐานข้อมูลมีขนาดเล็กมาก - แต่ละอันมีขนาดไม่เกิน 50MB ดังนั้นเราจึงสงสัยว่าจะใช้ SQL Express 2008 แทน SQL Server แบบเต็มหรือไม่

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

หน่วยความจำ 1GB และการใช้งาน 4 คอร์ในโปรเซสเซอร์เดียวไม่ได้ฟังดู จำกัด เกินไปเพราะขนาดฐานข้อมูลขนาดเล็กของเรา เราจะไม่มีผู้ใช้งานพร้อมกันมากกว่า 200 คนและการดำเนินการส่วนใหญ่จะเป็นธุรกรรมมากขึ้น (ซึ่งดูเหมือนว่าจะชอบดิสก์ความเร็วสูงจำนวนมากมากกว่า RAM / CPU ที่หนักใช่ไหม?)

ฉันไม่มีข้อได้เปรียบใด ๆ ของ SQL Server Standard ที่สามารถพิสูจน์การลงทุนเพิ่มเติม $ 5-20K ได้หรือไม่

คำตอบ:


17

SQL Server รุ่นอื่น ๆ จะได้รับสิ่งต่าง ๆ เช่น SQL Agent เพื่อให้คุณสามารถกำหนดเวลาการบำรุงรักษาฐานข้อมูลและงานอื่น ๆ

ตราบใดที่ฐานข้อมูลของคุณสามารถพอดีกับข้อ จำกัด ของรุ่น Express คุณก็สามารถทำได้

เซิร์ฟเวอร์ SQL ชอบ RAM จำนวนมาก ยิ่งมากยิ่งดี เนื่องจาก SQL Server ไม่สามารถโหลดข้อมูลลงในแคชซึ่งจะทำให้โหลดเพิ่มเติมบนดิสก์ คุณควรดูที่ Web Edition หรือ Workstation รุ่นของ SQL Server รุ่นเหล่านั้นมีขีด จำกัด สูงกว่ารุ่น Express แต่มีราคาต่ำกว่า Standard Edition

หากคุณเริ่มต้นด้วยรุ่น Express คุณสามารถอัพเกรดในภายหลังเป็น Standard Edition ได้ตลอดเวลาหลังจากที่คุณซื้อใบอนุญาต


+1 ไม่สามารถเพิ่มอะไรอีกในการตอบสนองนั้น
Nick Kavadias

ฉันไม่คิดว่าสามารถใช้ใบอนุญาตเวิร์กกรุ๊ปและเว็บฉบับสำหรับแอปธุรกิจโฮสต์ภายนอก
Akash Kava

1
สิทธิ์ใช้งาน CPU พร้อมใช้งานสำหรับทุกรุ่น (ยกเว้น Express ซึ่งไม่จำเป็นต้องมีใบอนุญาตใช้งาน CPU) ซึ่งหมายความว่าคุณสามารถใช้งานได้กับเว็บไซต์สาธารณะ นี่คือการเชื่อมโยงไปยังใบอนุญาต Workgroup ซีพียูbit.ly/KDLDR ฉันไม่พบ Web Edition ได้อย่างง่ายดาย แต่ VAR ใด ๆ ควรสามารถให้ได้โดยไม่ต้องมองไปรอบ ๆ
mrdenny

ฉันขอแนะนำให้เริ่มต้นด้วยสิ่งที่เหนือ Express และการย้ายจาก express ไปยังรุ่นอื่น ๆ อาจเป็นเรื่องยากในบางครั้ง
DanBig

3
SQL Express เป็นเอ็นจิ้นเดียวกับรุ่นอื่น ๆ โดยมีข้อ จำกัด ด้านขนาด การย้ายจาก Express ไปยังอีกฉบับเป็นเพียงเรื่องของการแยกฐานข้อมูลออกจาก Express edition และแนบไปยังอินสแตนซ์อื่นที่ใช้งานรุ่นอื่น
mrdenny

15

ปัญหาการผลิตและการแก้ไขปัญหาบางประการที่ฉันเคยมีในรุ่น Express:

สำรองข้อมูลตามกำหนดเวลา

SSIS

  • SQL Express 2008 มีตัวช่วยสร้างการนำเข้า / ส่งออกข้อมูล แต่รันไทม์ dtsexec ของ Express Edition จะไม่เรียกใช้แพคเกจ SSIS ทั้งหมด
  • วิธีแก้ปัญหา: คุณสามารถพัฒนาแพ็คเกจ SSIS ด้วย Developer Edition หากคุณมี Standard Edition หนึ่งรุ่นในเครือข่ายคุณสามารถกำหนดเวลาและเรียกใช้แพคเกจ SSIS ได้ คุณสามารถเรียกใช้แพคเกจ SSIS ได้จากรุ่นสำหรับนักพัฒนาตราบใดที่มันไม่ขัดกับสิทธิ์ใช้งาน
  • ดูเพิ่มเติมได้ที่:
    ฉันสามารถเรียกใช้แพคเกจ SSIS ด้วย SQL Server 2008 Express / Web หรือ Workgroup
    SSIS พร้อม SQL Server 2005 Express ได้หรือไม่

โปรไฟล์

  • ไม่มีตัวสร้างโปรไฟล์ SQL
  • วิธีแก้ปัญหา: ลองใช้SqlProfiler สำหรับ Express Edition
  • Caveat: ฉันไม่เคยพบว่ามันมีประโยชน์เสมอในการแก้ไขเหตุฉุกเฉินการผลิตเช่นเมื่อ sqlexpress ใช้ 100% ของความจุโปรเซสเซอร์เซิร์ฟเวอร์ ฉันไม่สามารถให้ profiler สร้างร่องรอยใด ๆ ในกรณีเช่นนี้
  • ดูเพิ่มเติมที่: profiler ที่จะใช้กับ sql express?

2
  1. ถ้าคุณอ่าน SQL Server License คุณไม่จำเป็นต้องซื้อลิขสิทธิ์เพิ่มเติมสำหรับเซิร์ฟเวอร์พาสซีฟหากมันใช้สำหรับ failover แต่เพียงผู้เดียวและมันไม่รองรับการค้นหาจนกว่าเซิร์ฟเวอร์แรกของคุณจะล้มเหลว

  2. เราใช้ SQL Server Express มานานแล้วและดีและดีขึ้นกว่า MSDE ก่อนหน้านี้เรามีการเชื่อมต่อ Simulatenous มากกว่า 200 การเชื่อมต่อ แต่เรามีฐานข้อมูลขนาดเดียว 2GB และทุกอย่างราบรื่น เราไม่เคยมีปัญหาใด ๆ หากเราหลีกเลี่ยงการเข้าร่วมที่มีราคาแพงและเราจัดทำดัชนีที่ดี ตอนนี้เรากำลังใช้ SQL Standard แต่จนถึงขนาดฐานข้อมูลของคุณมีมากกว่า 4GB และจำนวนผู้ใช้ของคุณน้อยกว่า 200-500 คุณจะสามารถใช้ชีวิตกับ SQL Express ได้อย่างแน่นอน

  3. SQL Server Express ใช้พื้นที่หน่วยความจำน้อยกว่าเล็กน้อย ~ 200MB โดยที่ Standard Edition ใช้อีก ~ 1.5GB อาจเป็นเพราะ Standard Edition จะแคชจำนวนมาก ข้อความค้นหาของคุณจะช้าลงใน Express ในไม่กี่มิลลิวินาทีเมื่อเทียบกับรุ่นมาตรฐาน น่าเสียดายที่ Express Edition ไม่ได้ใช้ซีพียูแบบมัลติคอร์ (เป็นคุณสมบัติที่ จำกัด ) ดังนั้นมันจะไม่ได้รับความช่วยเหลืออย่างมากไม่ว่าคุณจะมี 2 คอร์หรือ 4 คอร์


ฉันคิดว่า SSE 2008 ใช้หลายคอร์ (มากถึง 4)?
ปี๊บปี๊บ

@ LuckyLindy Standard จะใช้ซ็อกเก็ตได้ถึง 4 ซ็อกเก็ตมีหลายแกนต่อซ็อกเก็ตเท่าที่คุณมี
mrdenny

"แต่จนถึงขนาดฐานข้อมูลของคุณจะมากกว่า 4GB" 4GB เป็นข้อ จำกัด ต่อหนึ่งอินสแตนซ์ ฉันจำไม่ได้ว่ามีข้อ จำกัด จำนวนครั้งที่ใช้
Gennady Vanin ГеннадийВанин

2

LuckyLindy - ฉันขอแนะนำให้คุณหยุดสักครู่และตรวจสอบว่าคุณไม่ต้องการตัวแทน SQL คุณเขียน:

เรากำลังจะเปิดตัวแอปพลิเคชันธุรกรรมทางเว็บคู่ / ภายในที่ลูกค้าแต่ละรายมีฐานข้อมูลของตนเอง แต่ละฐานข้อมูลมีขนาดเล็กมาก - แต่ละอันมีขนาดไม่เกิน 50MB ดังนั้นเราจึงสงสัยว่าจะใช้ SQL Express 2008 แทน SQL Server แบบเต็มหรือไม่

คุณมีแผนสำรองข้อมูลอย่างไร คุณไม่จำเป็นต้องใช้ SQL Agent แต่แน่ใจว่าทำให้ชีวิตของ DBA ง่ายขึ้น คุณสามารถเขียน T-SQL / SMO / PowerShell / สคริปต์อะไรก็ได้ที่สำรองข้อมูลของคุณแล้วดำเนินการผ่าน sqlcmd หรือ PowerShell โดยใช้งานที่กำหนดเวลาไว้

แผนการบำรุงรักษาฐานข้อมูลของคุณเป็นอย่างไร? เมื่อเวลาผ่านไปฐานข้อมูลเหล่านั้นจะต้องมีการจัดระเบียบและตรวจสอบความสอดคล้อง Standard Edition มีสารพัดทุกชนิดเพื่อให้ง่ายในขณะที่ใน Express คุณต้องทำงาน (อีกครั้งกับการเขียนสคริปต์และงานที่กำหนดเวลาไว้)

คุณจะแจ้งให้ทราบถึงปัญหาบนเซิร์ฟเวอร์ได้อย่างไร? Agent ช่วยออกที่นี่ด้วย Alerts เพื่อแจ้งให้คุณทราบเมื่อบันทึกกำลังจะเต็มดิสก์กำลังเต็มเป็นต้น


สิ่งเหล่านี้เป็นงานประเภท SQL Server DBA ที่สำคัญ มันเป็นเรื่องสำคัญที่เราจะเรียกใช้ Express สำหรับแอพภายใน บริษัท แต่เมื่อคุณเริ่มบอกเราว่าคุณกำลังโฮสต์สิ่งเหล่านี้ให้กับลูกค้าฉันก็เป็นห่วง :)


ส่วนที่ 2นี้จะถามคุณว่ามีลูกค้ากี่รายที่คุณวางแผนที่จะให้การสนับสนุน - ทั้งที่เปิดตัวและหลังจากหนึ่งปี ถ้าคุณพูดว่า "100 ไคลเอ็นต์" ดังนั้นฐานข้อมูล 100 50MB จะไม่เพียงพอบน Express - คุณมีหน่วยความจำไม่เพียงพอ Heck - ขึ้นอยู่กับว่าคุณมีพื้นที่สามเหลี่ยมปากแม่น้ำมากแค่ไหนคุณอาจสูงสุดที่ 15 DBs ฉันไม่รู้

เราจะไม่มีผู้ใช้งานพร้อมกันมากกว่า 200 คนและการดำเนินการส่วนใหญ่จะเป็นธุรกรรมมากขึ้น (ซึ่งดูเหมือนว่าจะชอบดิสก์ความเร็วสูงจำนวนมากมากกว่า RAM / CPU ที่หนักใช่ไหม?)

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

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

สรุปแล้วความรู้สึกของฉันจากการอ่านคำอธิบายของคุณบอกว่า "ไม่ - รุ่นด่วนไม่ทรงพลังเพียงพอ" และฉันเกลียดรุ่นเวิร์กกรุ๊ป - คิดว่ามันเป็นข้อตกลงที่ไม่ดีดังนั้นมาตรฐานดูเหมือนจะเหมาะกับฉัน


2
สกอตต์ - คำตอบที่ดี จนถึงจุดของคุณ ... SQL Server Express ไม่มีการ จำกัด ขนาดการจัดเก็บข้ามฐานข้อมูลคุณเพียงแค่ไม่สามารถมีฐานข้อมูลเดียวที่มีข้อมูลมากกว่า 4GB จากการทดสอบฉันสร้างฐานข้อมูล 10,000 100MB (1TB) บนเซิร์ฟเวอร์เดียวและ SQL Server Express ทำงานได้ดี นอกจากนี้หน่วยความจำที่เกี่ยวข้องกับการเชื่อมต่อแต่ละครั้งจะไม่ถูกนับรวมกับ 1GB ฉันยอมรับว่าการจัดการฐานข้อมูลเหล่านี้อาจเป็นเรื่องที่เจ็บปวด ... แต่เนื่องจากเรามีฐานข้อมูลหลายพันรายการเราอาจต้องการสคริปต์ต่อไป (ไม่มีวิธีที่ฉันต้องการสัมผัสฐานข้อมูลด้วยตนเองจนกว่าจะกลายเป็น เสียหาย)
ปี๊บปี๊บ

+1, ฉันยอมรับว่ามันเป็นคำตอบ gr8 แต่ฉันก็อัป
เกรด

1

คุณได้พิจารณาใช้หนึ่งใน DBMS ฟรี (MySQL, PostreSQL ... ) หรือไม่? นั่นจะบรรเทาข้อกังวลเรื่องใบอนุญาตของคุณ?

หากไม่ใช่ตัวเลือก SQL Server Express จะเป็นทางออกที่ดี


2
เราทำการทดสอบประสิทธิภาพกับฐานข้อมูลหลักทั้งหมดเมื่อปีที่แล้ว - MySQL, PostgreSQL, Firebird, DB2, Oracle, SQL Server, SQL Server Express, และ SQL Desktop เราพบว่า DB2, Oracle, และ SQL Server (และ Express แต่ไม่ใช่เดสก์ท็อป) ทำให้ MySQL และ PostgreSQL บน Windows สำหรับการทำธุรกรรมของเราลดลง 2 1/2 ประสิทธิภาพหมายถึง # เซิร์ฟเวอร์เป็นสองเท่า เมื่อโฮสต์บน Linux, MySQL และ PostgreSQL ทำได้ดีขึ้นเล็กน้อย แต่ก็ยังไม่ถึงขั้น
ปี๊บปี๊บ

1

สามารถใช้กับงานผลิตที่สำคัญได้อย่างแน่นอน เราได้ใช้งานที่คลินิกดูแลสุขภาพกว่า 1,500 แห่งทุกแห่งโดยมีการติดตั้งอินสแตนซ์ของ SQL Server Express แยกต่างหากเพื่อประมวลผลธุรกรรมหลายล้านรายการในแต่ละวัน คุณสามารถหลีกเลี่ยงข้อเสียของ SQL Server Agent ได้อย่างง่ายดายโดยใช้วิธีใดวิธีหนึ่งต่อไปนี้:

  1. ผลิตภัณฑ์ของบุคคลที่สามเช่น SQLAutomate
  2. Windows Task Scheduler
  3. Standard หรือ Enterprise Edition ของ SQL Server ที่มีความสามารถของเซิร์ฟเวอร์หลักที่ติดตั้ง 1 และ 2 นั้นมีต้นทุนต่ำมากหรือฟรี 3 มีราคาแพงเว้นแต่คุณจะมีให้ในสภาพแวดล้อมของคุณ

ดูการนำเสนอที่ยอดเยี่ยมของ Michael Otey (google it) บน "การใช้ SQL Server Express ในการผลิต"


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