ในองค์กรใหญ่ๆที่ใช้ dbms กันอย่างเต็มตัว จะมีเจ้าหน้าที่ DBA (Database Admin) คอยดูแลและบริหารจัดการ Database Server
โดยปกติแล้ว DB Server เชาจะไม่ให้ระบบหน่วยความจำ นำ swap ram มาใช้หรือลงไปแตะกับ swap มากสักเท่าไรครับ ส่วนมาก swap ram เกิดขึ้นจากการ peak ของการใช้งานที่หนาแน่นในชั่วขณะหนึ่งครับ
ลองใช้โปรแกรม mytop เรียกดูการ query table ของ mysql realtime ดูครับ จะทำให้พอทราบได้ว่า มี user รายไหนเขียนโปรแกรม query ดีไม่ดีมากน้อยแค่ไหน พวกที่ใช้ phpnuke นี่เห็นๆเลยว่าใช้ database มากครับ
หากเว็บไซต์ดังกล่าว…ใช้โปรแกรมพวก cms และ hit ขนาดนั้น ก็คงต้องจัดการกับ mysql server อย่างดีหน่อยครับ เพราะใน 1 hit มันไม่ใช่ transfer ข้อมูล 10K-50K อะไรแค่นี้ครับ ใน 1 hit มันมีขบวนการใช้ process + allocate memory มากกว่าที่คิดเยอะครับ กับไซต์จำพวก cms อ่านะ
ลองเปิดดูหน้า server status ของ apahce เช็ค Slot ดูได้ครับ ตัว “W” ที่ wait รอจะไม่มีมากเหมือนเครื่องรวมมิตรเซอร์วิทครับ การที่ status “W” มีมาก…เนื่องมาจาก httpd ร้องขอ mysql แล้ว mysql query ไม่เร็วพอ และพอมี hit หลายๆ hit ซ้อนกันเข้าไป มันก็ รอ กันไป มากๆเข้า Slot ใน apache เต็ม ก็เลยพากันช้าไปหมด ระบบชะงักงันอ่านะ
แรกๆ เราจะเห็นการเรียก mysql จาก localhost (mysql ในเครื่องเดียวกัน) นั้นเร็วๆกว่ามากๆ มากกว่าแยก db ออกไปอีกเครื่องครับ
แต่พอ httpd ทำงานมากๆ รับ connection มากๆ (คือ hit มาก) คราวนี้แหละ เครื่องที่แยก db server จะแซงหน้าแบบนิ่มๆครับ ฝ่าย httpd ก็ทำงานไปเถอะ mysql ตั้งท่ารับ query แบะท่ารับแล้วส่งเดต้าให้ httpd อย่างเดียว ไม่ต้องรอกันทำงานครับ ทำให้การทำงานมีความเร็วเสมอต้นเสมอปลายในระดับหนึ่ง จนกว่า… จนกว่า load มันจะไปแตะราวๆ 10-30 ถึงจะเกิดอาการหน่วงๆและช้าให้เห็นอย่างชัดเจนครับ
หากเราแยก db server ออกมาครั้งแรก… เราจะเห็นว่าเว็บเปิดช้ากว่าเดิมเล็กน้อยครับ เพราะนั้นคือมันเรียกข้อมูล mysql ข้ามเครื่องกันครับ หากแต่ใช้ lan card gigabit นะ เราจะไม่รู้สึกเลยครับ สมัยนี้เทคโนโลยี่ทันสมัยมาก ทำ load balancer กันก็ทำกันได้ไม่ยากแล้ว น่าจะมองๆระบบนี้เอามาแก้ปัญหากับเว็บใหญ่ๆหรือโฮสใหญ่ๆก็ดีนะครับ