Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > PHP > PHP Forum > วานพี่ๆในนี้ช่วยแนะนำการทำ multiple database ให้ผมทีครับ



 

วานพี่ๆในนี้ช่วยแนะนำการทำ multiple database ให้ผมทีครับ

 



Topic : 072511



โพสกระทู้ ( 5 )
บทความ ( 0 )



สถานะออฟไลน์




คือผมต้องการทำ Multiple database อ่ะครับ เหตุผลที่ต้องทำเพราะว่าเว็บผมมี Traffic เยอะ แล้วจำนวน record ที่มาก(16,000 record) เมื่อผู้ใช้ 400-500 ออนไลน์พร้อมกันแล้วเรียกข้อมูลพร้อมกันมันทำให้ CPU ของ Host ทำงานหนักเกินขีดจำกัด ผมจึงมีความคิดว่าจะแตกข้อมูลจากฐานข้อมูลเดียวออกมาเป็นสองฐานข้อมูลโดยการแบ่งข้อมูลไปกันคนละครึ่ง เพราะคิดว่าการทำแบบนี้มันน่าจะลดการทำงาน ของ cpu ลงไปบ้าง ตัวผมเองก็ไม่เชียวชาญกับ database สักเท่าไหร่ เคยได้ยินเค้าทำ multi db ของ wordpress กัน ก็คิดว่าวิธีนี้น่าจะแก้ปัญหา db บวมที่ผมกำลังเผชิญอยู่ได้ ตอนนี้ผมได้เขียน code เพื่อเรียกข้อมูลจากจากตารางที่ชื่อว่า article_tb จาก 2 ฐานข้อมูลที่ชื่อว่า db1 กับ db2 มาแสดงพร้อมกัน แบบนี้ครับ


Code
SELECT db1.article_tb.*, db2.article_tb.* FROM db1.article_tb, db2.article_tb WHERE db1.article_tb.category= 13 AND db2.article.category_q = 13 LIMIT 20


(การเขียนแบบนี้มันรันได้ครับ แต่มันดันไปดึงแต่ข้อมูลใน db2 ซึ่งข้ามหน้าข้ามตาข้อมูลใน db1 ไปได้อย่างไร แถมยังเรียกข้อมูลออกมาซ้ำของเดิมใน 3 บรรทัดสุดท้ายอีกด้วย)


เขียนแบบนี้มันรันได้ครับไม่มีปัญหา และคราวนี้ผมต้องการจัดเรียงมันโดยให้มันเรียงลำดับจากมากไปหาน้อย โดยการเพิ่ม code เข้าไปแบบนี้



Code
SELECT db1.article_tb.*, db2.article_tb.* FROM db1.article_tb, db2.article_tb WHERE db1.article_tb.category = 13 AND db2.article_tb.category = 13 ORDER BY db1.article_tb.id, db2.article_tb.id DESC LIMIT 20


พอรองรันดูปรากฏว่ามันก็ไม่ยอมแสดงผลครับ แล้วมันก็โหลดนานมากกกก สักพักก็ขึ้น error ว่า

Error
Fatal error: Maximum execution time of 30 seconds exceeded in C:\AppServ\www\smf_test\test.php on line 8


ผมเขียนผิดพลาดตรงไหนวานพี่ๆแนะนำทีครับ



Tag : PHP, MySQL, CakePHP









ประวัติการแก้ไข
2012-01-24 06:46:17
2012-01-24 06:53:18
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2012-01-24 06:39:57 By : GOKUSEN View : 1831 Reply : 2
 

 

No. 1



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

ผมว่าแบบนี้มันไม่ได้ช่วยให้การทำงานเร็วขึ้นเลยครับ อันที่จริงแยกแค่ table ก็พอครับ ส่วนปัญหาโหลดนั้น ผมตอนนี้ก็เจออยู่ครับ วิธีแก้ไขคือ Data ที่เยอะผมจะไม่ใช้การ JOIN กัน เพราะมันจะทำงานได้ช้า Query เดียวอาจจะเร็ว แต่เมื่อมี Request จำนวนมาก Server จะเริ่มโหลดและเกืดการรอ Queue กันขึ้น ส่วนการแก้ไขปัญหามันขึ้นอยู่กับเทคนิคครับ เช่น

- Query ให้น้อยที่สุดเท่าที่จะเป็นไปได้
- เมื่อ Data มีขนาดใหญ่ ควรออกแบบให้มีการ Request นาน ๆ ครั้งหนึ่ง เช่น ข้อมูลสมาชิก เมื่อสมาขิก Login อยู่ แทนที่จะ Request ทุก ๆ ครั้งเพื่อดึงข้อมูลสมาชิก ให้ใช้เก็บข้อมูลบางส่วนลงใน Session แทน และนำค่า Session มาใช้
- เว็บใหญ่ ๆ จะใช้การแบ่ง Server เป็น Sub Domain เพื่อแยกการทำงานกัน
- หน้าแรกที่มีการเรียกเข้ามาบ่อย ๆ ให้ออกแบบที่มีการ Request กับ Database ให้น้อยที่สุด

และเทคนิคอื่น ๆ ทุกวันนี้ผมใช้การดักจับ Process Query ของ mySQL ว่าตัวไหนทำงานช้า ก็ค่อยๆ ตามแก้ไปครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-01-24 09:58:25 By : webmaster
 


 

No. 2



โพสกระทู้ ( 5 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 1 เขียนโดย : webmaster เมื่อวันที่ 2012-01-24 09:58:25
รายละเอียดของการตอบ ::

ขอบคุณมากๆครับสำหรับคำแนะนำ เว็บตัวนี้เป็นเว็บที่ผมหัดเขียนครั้งแรก ผมก็ตามแก้และพัฒนามาเรื่อยๆ ใช้ catch ในส่วนของข้อมูลที่ไม่ต้องการให้อัพเดทแบบ reatime และก็พยายามลดการ query ลงอย่างที่พี่แนะนำมาเลยอ่ะครับ แต่ก็ยังไม่หมดปัญหา

เว็บผมฐานข้อมูล ประมาณ85 M ในตาราง Article มี record ประมาณ 16,000 แถว ในตาราง user มีประมาณ 10,000 แถว
คนออนไลน์พร้อมกันเยอะสุดประมาณ 600 คน ผมใช้ hostgetor แบบ baby plan มันผิดปกติหรือเปล่าครับ ที่ cpu เว็บผมในบางช่วงเวลาจะสูงเกินกำหนดที่โฮสเค้าตั้งไว้ คือทาง hostegotor เค้า limit การใช้งาน cpu ของเราไม่ให้เกิน 25% นานกว่า 30 นาที แบบนี้เว็บผมผิดปกติไปหรือเปล่าครับ ช่วยตอบอีกนิดนะครับพี่ ขอบคุณมากๆเลยครับ



ประวัติการแก้ไข
2012-01-24 10:58:19
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-01-24 10:57:36 By : gokusen
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : วานพี่ๆในนี้ช่วยแนะนำการทำ multiple database ให้ผมทีครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 04
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่