ฉันรู้จัก SQLite มาเป็นเวลานานและฉันรู้ว่ามันรวดเร็วดี แต่ฉันไม่เคยลองในเซิร์ฟเวอร์ที่ใช้งานจริง ฉันไม่สามารถหาประมาณการที่ชัดเจนเกี่ยวกับปริมาณการรับส่งข้อมูลที่สามารถจัดการได้ก่อนที่จะล้มเหลว
ใครบ้างมีตัวเลขหรือบทความเกี่ยวกับเรื่องนี้?
ฉันรู้จัก SQLite มาเป็นเวลานานและฉันรู้ว่ามันรวดเร็วดี แต่ฉันไม่เคยลองในเซิร์ฟเวอร์ที่ใช้งานจริง ฉันไม่สามารถหาประมาณการที่ชัดเจนเกี่ยวกับปริมาณการรับส่งข้อมูลที่สามารถจัดการได้ก่อนที่จะล้มเหลว
ใครบ้างมีตัวเลขหรือบทความเกี่ยวกับเรื่องนี้?
คำตอบ:
น่าเสียดายที่ฉันไม่ได้มีตัวเลขใด ๆ สำหรับคุณเกี่ยวกับความสามารถในการโหลด แต่มีความคิดเห็นเล็กน้อยเกี่ยวกับปัจจัยการ จำกัด ประสิทธิภาพ:
ความเร็วของ SQLite จะได้รับผลกระทบจากความเร็วของดิสก์ที่เปิดอยู่และมีการแทรก / อัปเดตจำนวนมากหรือไม่ (เช่นการเข้าถึงเพื่อเขียน) ล็อกการเขียนถูก จำกัด โดยความเร็วการหมุนของดิสก์
การทำธุรกรรมจะเริ่มต้นตามค่าเริ่มต้น แต่คุณจะได้รับประสิทธิภาพที่ดีขึ้นหากคุณเริ่มและยอมรับการทำธุรกรรม ฉันมีใบมีดจำนวนมากอย่างรวดเร็วเมื่อจัดการธุรกรรมโดยทางโปรแกรม
หากคุณเป็นเพียงการอ่านข้อมูลโดยทั่วไปคุณจะได้รับประสิทธิภาพที่ดีในประสบการณ์ของฉัน ดังนั้น SQLite สามารถใช้เป็นระบบแคชเพื่อจัดเก็บเซิร์ฟเวอร์ฐานข้อมูลการอ่าน, รีโมตแบบเฉพาะหรือแบบสอบถามที่ซับซ้อน
มันใช้ทรัพยากรน้อยกว่าเซิร์ฟเวอร์ฐานข้อมูลดังนั้นสิ่งนี้อาจส่งผลกระทบต่อประสิทธิภาพของไซต์เนื่องจากการปล่อยทรัพยากรเพิ่มเติมสำหรับเว็บเซิร์ฟเวอร์และรหัสแอปพลิเคชัน
หากคุณต้องการจำนวนของการเขียนพร้อมกันเป็นไปได้จากนั้นเซิร์ฟเวอร์ฐานข้อมูล (เช่น MySQL, Postgres) อาจให้บริการคุณได้ดีขึ้น
ในฐานะที่เป็นdevrimระบุรัฐเว็บไซต์ SQLite รอบ 100k ผู้ใช้ / วันควรจะปรับ ระบบ Trac ต้องการการเขียนดังนั้นประสิทธิภาพอาจช้าลงในกรณีนั้น
ฉันมีบางจุดที่จะเพิ่มคำตอบที่ดีเหล่านี้
SQLiteเวอร์ชันปัจจุบันมี WAL (การบันทึกการอ่านล่วงหน้า) เพื่อให้การอ่านและการเขียนสามารถดำเนินการได้พร้อมกัน ดังนั้นข้อ จำกัด นักเขียนเดียวแบบดั้งเดิมที่กล่าวถึงในคำตอบก่อนหน้านี้ไม่มีอยู่อีกต่อไป ฉันยังไม่ได้เห็น WAL ในการผลิตดังนั้นฉันจึงไม่สามารถแสดงความคิดเห็นได้ว่ามันชั่งได้ดีเพียงใด
การใช้ WAL หรือไม่ถ้าฐานข้อมูล SQLite ของคุณเป็นแบบอ่านอย่างเดียว (หรืออัปเดตเป็นชุด) และมันพอดีกับ RAM (ระบบปฏิบัติการของคุณมี RAM สำรองเพียงพอที่จะเก็บไว้ในบัฟเฟอร์) มันสามารถปรับขนาดได้อย่างดี ฉันเองก็สงสัยเกี่ยวกับประสิทธิภาพความสามารถในการปรับขยายและความทนทาน แต่ตอนนี้หลังจากผ่านไปเก้าเดือนในการผลิตมันได้พิสูจน์แล้วว่าทำงานได้แม้ส่วนที่ซับซ้อนที่สุดของระบบก็ดีมาก
Sqlite นั้นยอดเยี่ยมสำหรับการฝังในแอพพลิเคชั่นและนั่นคือสิ่งที่มันถูกออกแบบมาสำหรับ แต่มันไม่แน่นอน "เร็วอย่างเห็นได้ชัด" ฉันใช้สำหรับแอพพลิเคชั่นของตัวเองหลายตัวเพื่อความสะดวกในการมีเพียงสองไฟล์เท่านั้นที่สามารถคัดลอกไปยังเครื่องอื่นเพื่อให้แอปพลิเคชันทำงานได้อย่างสมบูรณ์ การทดสอบกับ MySQL โดยใช้โครงสร้างเดียวกันดัชนี ฯลฯ แสดงให้เห็นว่า Sqlite ช้าลงอย่างมากแม้แต่สำหรับฐานข้อมูลขนาดเล็ก ฉันคาดหวังความแตกต่างของประสิทธิภาพจะเพิ่มขึ้นตามขนาดฐานข้อมูลที่เพิ่มขึ้นถึงแม้ว่าฉันจะไม่สามารถพูดได้อย่างแน่นอนเพราะฉันใช้กับฐานข้อมูลที่น้อยกว่า 100MB เท่านั้น
ฉันคิดว่า sqlite นั้นเร็วกว่าไฟล์ text / xml เท่านั้น (คุณอาจประหลาดใจถ้าคุณลองมัน) และมันไม่รองรับการทำงานพร้อมกันหากคุณต้องการสร้างเว็บไซต์สำหรับอินทราเน็ตที่ซึ่งผู้คนลงทะเบียนเวลาทำงานของพวกเขาหรือใช้การจองตั๋ว trac มันอาจให้บริการได้ดี นอกเหนือจากนั้นควรหลีกเลี่ยงและแทนที่ด้วย mysql หรือ couchdb
เว็บไซต์ sqlite กล่าวว่าผู้ใช้ 100k คนต่อวันน่าจะดี แต่ฉันสงสัยอย่างมากเพราะโครงการ trac ง่าย ๆ ติดขัดมากกับการใช้สำนักงาน 10 ppl
Sqlite ไม่ใช่แอปพลิเคชัน DB ฐานข้อมูลลูกค้า / เซิร์ฟเวอร์แบบดั้งเดิม มันเป็นห้องสมุดที่ฝังตัวอยู่ภายในแอปพลิเคชันอื่น มันถูกออกแบบมาสำหรับแอปพลิเคชันเดสก์ท็อปผู้ใช้เดี่ยว คุณไม่ต้องการที่จะลองใช้มันเพราะการแทนที่ MySQL / PostgreSQL / MS-SQL แบบสแตนด์อโลนในสภาพแวดล้อมแบบผู้ใช้หลายคนเพราะฐานข้อมูลทั้งหมดถูกล็อคเมื่อเขียน คุณจะต้องจัดการกับปัญหาการช่วงชิงแม้กระทั่งโหลดที่เบาซึ่งจะทำลายประสิทธิภาพ