ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingสอบถามแนวทางทำเว็บที่ฐานข้อมูลเยอะมากให้โหลดเร็วครับ
หน้า: [1] 2   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: สอบถามแนวทางทำเว็บที่ฐานข้อมูลเยอะมากให้โหลดเร็วครับ  (อ่าน 3695 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
postmunnet
Global Moderator
หัวหน้าแก๊งเสียว
*****

พลังน้ำใจ: 269
ออฟไลน์ ออฟไลน์

กระทู้: 2,813



ดูรายละเอียด
« เมื่อ: 16 เมษายน 2016, 21:58:10 »

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

table ที่เก็บข้อมูลโพสมีอยู่ 50,000 row
table ที่เกี่ยวข้องมีอยู่ 120,000 row และ 80,000 row

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

อยากขอคำแนะนำว่าผมจะปรับแต่งอะไรได้บ้างครับเพื่อให้เว็บโหลดเร็ว
ตอนนี้ทำ index ไปบ้างแล้วในจุดที่จำเป็น แต่ยังไม่ทั้งหมดครับ
ตอนนี้ที่คิดอีกอย่างคือทำ cache ล่วงหน้า หมายถึง
ให้อายุ cache หมดทุกๆ 10 นาที แต่ผม generate cache ด้วยระบบก่อนช่วงนาทีที่ 9 เพื่อที่จะได้ไม่มีการรอโหลดใหม่
บันทึกการเข้า
MapTwoZa
ก๊วนเสียว
*

พลังน้ำใจ: 75
ออฟไลน์ ออฟไลน์

กระทู้: 366



ดูรายละเอียด
« ตอบ #1 เมื่อ: 16 เมษายน 2016, 22:34:08 »


ปรกติ ข้อมูลหลักแสน มันยังไม่ช้านะครับ
ลองทำตามนี้

1. analyse table + query เลยครับ
  - ทำ FK Constraint ยัง ถ้ายังทำซะ มันช่วยเวลา join
  - มี query ที่ทำให้ช้าป่าว เช่นพวก right join, left join, order by rand() อะไรพวกนี้
  - ถ้าเป็นที่ index ก็ทำ index ให้ถูกจุด อย่าสร้าง index จนเยอะเลอะเทอะไป ต้องวิเคราห์ดีๆ  (ตรงนี้ถ้าแบ่ง layer ตอนเขียน app ดี จะง่ายมาก )
  - ถ้าทำข้างบนแล้วยังช้าอีก ให้ดู query ครับ ถ้า query มัน complex มากๆ มี join เยอะๆ ย้าย DB ไปตัวที่ดีกว่าครับ แนะนำ pgsql หรือ mssql ครับ (ถ้างบหนาก็ไป oracle/DB2 เลยครับ 55)


ปล. cache ไม่ได้เอามาแก้ปัญหาเรื่อง query ช้านะครับ มันเอาไว้ลดการ touch DB โดยไม่จำเป็น
บันทึกการเข้า

Good code quality Developer Cheesy
postmunnet
Global Moderator
หัวหน้าแก๊งเสียว
*****

พลังน้ำใจ: 269
ออฟไลน์ ออฟไลน์

กระทู้: 2,813



ดูรายละเอียด
« ตอบ #2 เมื่อ: 16 เมษายน 2016, 22:42:45 »


ปรกติ ข้อมูลหลักแสน มันยังไม่ช้านะครับ
ลองทำตามนี้

1. analyse table + query เลยครับ
  - ทำ FK Constraint ยัง ถ้ายังทำซะ มันช่วยเวลา join
  - มี query ที่ทำให้ช้าป่าว เช่นพวก right join, left join, order by rand() อะไรพวกนี้
  - ถ้าเป็นที่ index ก็ทำ index ให้ถูกจุด อย่าสร้าง index จนเยอะเลอะเทอะไป ต้องวิเคราห์ดีๆ  (ตรงนี้ถ้าแบ่ง layer ตอนเขียน app ดี จะง่ายมาก )
  - ถ้าทำข้างบนแล้วยังช้าอีก ให้ดู query ครับ ถ้า query มัน complex มากๆ มี join เยอะๆ ย้าย DB ไปตัวที่ดีกว่าครับ แนะนำ pgsql หรือ mssql ครับ (ถ้างบหนาก็ไป oracle/DB2 เลยครับ 55)


ปล. cache ไม่ได้เอามาแก้ปัญหาเรื่อง query ช้านะครับ มันเอาไว้ลดการ touch DB โดยไม่จำเป็น

พวก join ไม่มีครับ มีแต่ where ทั่วไป เดี๋ยวจะลองเอาคำแนะนำไปใช้งานดูครับ wanwan017
บันทึกการเข้า
MapTwoZa
ก๊วนเสียว
*

พลังน้ำใจ: 75
ออฟไลน์ ออฟไลน์

กระทู้: 366



ดูรายละเอียด
« ตอบ #3 เมื่อ: 16 เมษายน 2016, 23:07:22 »

พวก join ไม่มีครับ มีแต่ where ทั่วไป เดี๋ยวจะลองเอาคำแนะนำไปใช้งานดูครับ wanwan017

ต้องดูที่ query ด้วยนะครับ
บางคนเค้าเขียน join โดยใช้ where เอาอ่ะ

ประมาณนี้

จาก

SELECT *
FROM EMPLOYEE e
JOIN DEPARTMENT d ON e.DEPARTMENT_ID = d.DEPARTMENT_ID

เป็น

SELECT *
FROM EMPLOYEE e, DEPARTMENT d
WHERE e.DEPARTMENT_ID = d.DEPARTMENT_ID

อะไรแบบนี้ครับ

ประเด็นคือ table ไหนที่ relation กันมันควร(ต้อง) มี FK Constraints ครับ
« แก้ไขครั้งสุดท้าย: 16 เมษายน 2016, 23:09:06 โดย MapTwoZa » บันทึกการเข้า

Good code quality Developer Cheesy
Putter™
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 421
ออฟไลน์ ออฟไลน์

กระทู้: 2,103



ดูรายละเอียด เว็บไซต์
« ตอบ #4 เมื่อ: 17 เมษายน 2016, 06:39:09 »

ทางฝั่ง Server เปิดพวก Slow log เพิ่มเติมครับเพื่อหาว่า query ไหนประมวลผลนานและงาน Database แนะนำ SSD Storage ครับเร็วขึ้นแบบเห็นผลแน่นอน

ลองดูพวกการทำ cache ส่วนไหน cache ได้ก็แคชไป Web Server ทำ page cache ได้ และส่วนที่เป็น Database ก็ memcache ครับ
« แก้ไขครั้งสุดท้าย: 17 เมษายน 2016, 06:43:41 โดย Putter™ » บันทึกการเข้า

Ruk-Com Hosting (IAAS)
Ruk-Com Cloud (PAAS)
รีวิวโฮสติ่ง Ruk-Com  จากสมาชิก THAISEO

ไม่พอใจยินดีคืนเงินเต็มจำนวนทุกบริการ
evev9
ก๊วนเสียว
*

พลังน้ำใจ: 13
ออฟไลน์ ออฟไลน์

กระทู้: 471



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 17 เมษายน 2016, 07:58:03 »

อยากรู้ด้วยครับ  wanwan017
บันทึกการเข้า

afterdead
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 156
ออฟไลน์ ออฟไลน์

กระทู้: 2,833



ดูรายละเอียด เว็บไซต์
« ตอบ #6 เมื่อ: 17 เมษายน 2016, 16:43:52 »

ต้องดูองค์ประกอบหลายอย่างนะครับจำนวนข้อมูลทั้งหมด  กับหน้าไหนคิวรี่ข้อมูลบ่อย เยอะๆ จะสามารถลิมิต จำนวน rows มี่คิวรี่ออกมาได้ไหม

และจำเป็นแค่ไหนที่จะต้องทำให้เร็ว เคยทำกรีณี คิวรี่ หลายแสนหลายล้าน rows แต่ user ที่ใช้งาน เป้น admin แบบนี้คือ user สามารถรอการคิวรี่ได้ ไม่ต้องรีบโหลด ข้อมูลมาก ผมก็ใช้ ajax เรียกข้อมูลมาทีละนิด ผลักภาระไปที่ user แทน server

sql query ที่เขียน อยู่มีคำสั่งที่ทำให้ช้าหรือไม่
สร้าง index
« แก้ไขครั้งสุดท้าย: 17 เมษายน 2016, 18:53:45 โดย afterdead » บันทึกการเข้า

xvlnw.com
Verified Seller
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 493
ออฟไลน์ ออฟไลน์

กระทู้: 5,905



ดูรายละเอียด เว็บไซต์
« ตอบ #7 เมื่อ: 17 เมษายน 2016, 17:31:10 »

ถ้าไม่มี Join นี่ทำให้ระบบเร็วขึ้นเยอะครับ
ส่วนฟิลล์ไหนที่ใช้ where ก็ทำ indexing ให้หมดครับ
เรื่อง hardware ถ้าเป็นไปได้ก็แนะนำ SSD Storage ช่วยได้เยอะมากๆ
หรือตารางไหน ถ้าเอามาทำแคชเป็น memory engine ได้ ก็จะทำให้เร็วมหาาศาลครับ
บันทึกการเข้า

MapTwoZa
ก๊วนเสียว
*

พลังน้ำใจ: 75
ออฟไลน์ ออฟไลน์

กระทู้: 366



ดูรายละเอียด
« ตอบ #8 เมื่อ: 17 เมษายน 2016, 17:40:44 »

เห็นเม๊นบนๆ พูดถึง myisam เลยนึกขึ้นได้
myisam นี่ผมไม่แนะนำให้ใช้เลยครับ

เพราะ ?
มันจะช้ามาก ถ้าตารางนั้นมีทั้ง select และ insert
แถม feature มันเทียบ innodb ไม่ติด

อีกอย่าง Oracle มันก็ผลักดัน innodb มาจนสุดแล้วๆครับ จน performance ใกล้เคียง myisam แล้วด้วยซ้ำ

ผมไปเจอใน stackoverflow มา เค้าเทียบ myisam กับ innodb ให้
http://stackoverflow.com/quest...ons/20148/myisam-versus-innodb




To summarize:

Frequent reading, almost no writing   => MyISAM
Full-text search in MySQL <= 5.5      => MyISAM


ถึงมันจะ read มากมายแค่ไหน เราแก้ด้วยการทำ caching กับ innodb ได้

ถ้าผมจะใช้ myisam มันเหลือเคสเดียวครับ คือ มีการ read เยอะมาก แถมข้อมูลที่มัน read นั้นหลากหลายสุดๆ ทำให้การ cache ไม่ช่วย


« แก้ไขครั้งสุดท้าย: 17 เมษายน 2016, 17:43:33 โดย MapTwoZa » บันทึกการเข้า

Good code quality Developer Cheesy
afterdead
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 156
ออฟไลน์ ออฟไลน์

กระทู้: 2,833



ดูรายละเอียด เว็บไซต์
« ตอบ #9 เมื่อ: 17 เมษายน 2016, 18:53:25 »

เห็นเม๊นบนๆ พูดถึง myisam เลยนึกขึ้นได้
myisam นี่ผมไม่แนะนำให้ใช้เลยครับ

เพราะ ?
มันจะช้ามาก ถ้าตารางนั้นมีทั้ง select และ insert
แถม feature มันเทียบ innodb ไม่ติด

อีกอย่าง Oracle มันก็ผลักดัน innodb มาจนสุดแล้วๆครับ จน performance ใกล้เคียง myisam แล้วด้วยซ้ำ

ผมไปเจอใน stackoverflow มา เค้าเทียบ myisam กับ innodb ให้
http://stackoverflow.com/quest...ons/20148/myisam-versus-innodb




To summarize:

Frequent reading, almost no writing   => MyISAM
Full-text search in MySQL <= 5.5      => MyISAM


ถึงมันจะ read มากมายแค่ไหน เราแก้ด้วยการทำ caching กับ innodb ได้

ถ้าผมจะใช้ myisam มันเหลือเคสเดียวครับ คือ มีการ read เยอะมาก แถมข้อมูลที่มัน read นั้นหลากหลายสุดๆ ทำให้การ cache ไม่ช่วย


นี่ผมเข้าใจผิดมาตลอด เลยนะเนี่ย 555 ขอบคุณครับ ที่มาแนะนำความรู้ใหม่ๆ ^^   Embarrassed  เข้าใจมาตลดว่า อ่านเขียนเยอะๆ ต้องใช้ myisam จะดีกว่า แต่ก็ไม่เคยเทสสักที !!
เพิ่มเติมให้ผลการทดสอบ ครับ Smiley
http://golfreeze.packetlove.co...mileboard/index.php?topic=45.0
« แก้ไขครั้งสุดท้าย: 17 เมษายน 2016, 18:54:52 โดย afterdead » บันทึกการเข้า

postmunnet
Global Moderator
หัวหน้าแก๊งเสียว
*****

พลังน้ำใจ: 269
ออฟไลน์ ออฟไลน์

กระทู้: 2,813



ดูรายละเอียด
« ตอบ #10 เมื่อ: 17 เมษายน 2016, 19:04:05 »

ขอบคุณทุกท่านมากครับ การทำ index ผมยังงงๆ นะครับ การทำ index อันเดียวอย่าง index(a) index(b) กับการทำ index(a,b) มันไม่เหมือนกันใช่ไหมครับ

ประมาณว่า ผม where a=1 ตัวเดียวก็ทำ index(a) แล้วถ้าผม where a=1,b=2 จะต้องทำ index(a) index(b) หรือ index(a,b) ครับ
เท่าที่อ่านมาเหมือนกับว่าตัวเล็กตัวใหญ่ก็มีผลด้วยนะ แล้วการเรียงซ้ายไปขวาก็มีผลให้ทำงานหรือไม่เช่นกัน ผมเข้าใจถูกต้องไหมครับ


ส่วน memcache เดี๋ยวลองศึกษาดูครับ ยังทำไม่ค่อยเป็น
บันทึกการเข้า
kingofdollars
สมุนแก๊งเสียว
*

พลังน้ำใจ: 95
ออฟไลน์ ออฟไลน์

กระทู้: 830



ดูรายละเอียด
« ตอบ #11 เมื่อ: 17 เมษายน 2016, 20:08:34 »

ผมเคยเจอปัญหาแบบนี้แหละครับ

Database ตรง table
post 300,000 row
post meta 800,000 row

แก้ปัญหาด้วย manual cache ครับ

อันไหนเปลี่ยนแปลงบ่อย ตั้งเวลาให้น้อยๆ
อันไหนนานๆ ที เปลี่ยนเวลา ให้อัพเดททุกๆ 30 นาที หรือ 1 ชั่วโมง หรือทุก 6 ขั่วโมง ทุก 12 ชั่วโมงว่ากันไป

แต่ละอันจะไม่ตรงกันเลย  สามารถครอบได้ทั้งหมด หรือบางส่วน  แล้วค่อยๆ ปรับแต่งไป

ลองศึกษาวิธีนี้ดูครับ   เพราะการลง plugin มันไม่สามารถปรับแต่งอะไรได้เองมากมาย

http://gethitech.com/manual-ca...-for-wordpress-without-plugin/
บันทึกการเข้า

postmunnet
Global Moderator
หัวหน้าแก๊งเสียว
*****

พลังน้ำใจ: 269
ออฟไลน์ ออฟไลน์

กระทู้: 2,813



ดูรายละเอียด
« ตอบ #12 เมื่อ: 17 เมษายน 2016, 20:21:03 »

ผมเคยเจอปัญหาแบบนี้แหละครับ

Database ตรง table
post 300,000 row
post meta 800,000 row

แก้ปัญหาด้วย manual cache ครับ

อันไหนเปลี่ยนแปลงบ่อย ตั้งเวลาให้น้อยๆ
อันไหนนานๆ ที เปลี่ยนเวลา ให้อัพเดททุกๆ 30 นาที หรือ 1 ชั่วโมง หรือทุก 6 ขั่วโมง ทุก 12 ชั่วโมงว่ากันไป

แต่ละอันจะไม่ตรงกันเลย  สามารถครอบได้ทั้งหมด หรือบางส่วน  แล้วค่อยๆ ปรับแต่งไป

ลองศึกษาวิธีนี้ดูครับ   เพราะการลง plugin มันไม่สามารถปรับแต่งอะไรได้เองมากมาย

http://gethitech.com/manual-ca...-for-wordpress-without-plugin/


กำลังทำเลยครับ เรียกได้ว่าหัวหมุนกันเลยทีเดียว Tongue
บันทึกการเข้า
joei
ก๊วนเสียว
*

พลังน้ำใจ: 41
ออฟไลน์ ออฟไลน์

กระทู้: 221



ดูรายละเอียด
« ตอบ #13 เมื่อ: 17 เมษายน 2016, 22:58:47 »

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

table ที่เก็บข้อมูลโพสมีอยู่ 50,000 row
table ที่เกี่ยวข้องมีอยู่ 120,000 row และ 80,000 row

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

อยากขอคำแนะนำว่าผมจะปรับแต่งอะไรได้บ้างครับเพื่อให้เว็บโหลดเร็ว
ตอนนี้ทำ index ไปบ้างแล้วในจุดที่จำเป็น แต่ยังไม่ทั้งหมดครับ
ตอนนี้ที่คิดอีกอย่างคือทำ cache ล่วงหน้า หมายถึง
ให้อายุ cache หมดทุกๆ 10 นาที แต่ผม generate cache ด้วยระบบก่อนช่วงนาทีที่ 9 เพื่อที่จะได้ไม่มีการรอโหลดใหม่

ขอรายละเอียดเรื่อง hardware หน่อยสิครับ
บันทึกการเข้า

postmunnet
Global Moderator
หัวหน้าแก๊งเสียว
*****

พลังน้ำใจ: 269
ออฟไลน์ ออฟไลน์

กระทู้: 2,813



ดูรายละเอียด
« ตอบ #14 เมื่อ: 18 เมษายน 2016, 05:25:40 »

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

table ที่เก็บข้อมูลโพสมีอยู่ 50,000 row
table ที่เกี่ยวข้องมีอยู่ 120,000 row และ 80,000 row

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

อยากขอคำแนะนำว่าผมจะปรับแต่งอะไรได้บ้างครับเพื่อให้เว็บโหลดเร็ว
ตอนนี้ทำ index ไปบ้างแล้วในจุดที่จำเป็น แต่ยังไม่ทั้งหมดครับ
ตอนนี้ที่คิดอีกอย่างคือทำ cache ล่วงหน้า หมายถึง
ให้อายุ cache หมดทุกๆ 10 นาที แต่ผม generate cache ด้วยระบบก่อนช่วงนาทีที่ 9 เพื่อที่จะได้ไม่มีการรอโหลดใหม่

ขอรายละเอียดเรื่อง hardware หน่อยสิครับ

ตอนนี้ใช้ vps ของน้องเท็นอยู่ครับ packet ดังนี้
https://www.asiagb.com/vps/

VPS PLAN 2
1000/เดือน
Fedora CentOS Debian Ubuntu
1 CORE
100GB
2GB
บันทึกการเข้า
joei
ก๊วนเสียว
*

พลังน้ำใจ: 41
ออฟไลน์ ออฟไลน์

กระทู้: 221



ดูรายละเอียด
« ตอบ #15 เมื่อ: 18 เมษายน 2016, 11:33:20 »

เริ่มจากการ Tune Server หน่อยครับ

ถ้าใช้ innodb ให้เพิ่มขนาด innodb_buffer_pool_size
ถ้าใช้ myisam ให้เพิ่มขนาด key_buffer_size, read_buffer_size, read_rnd_buffer_size

ลอง query show global status like '%tmp%'; หน่อย
ถ้า Created_tmp_tables เยอะ แสดงว่ามีการ select group by หรือ select where or เยอะ ลองปรับดูว่าลดได้ไหม
ถ้า Created_tmp_disk_tables เยอะ แสดงว่าค่า tmp_table_size น้อยไป

ลองดูว่าดีขึ้นไหมครับ
บันทึกการเข้า

postmunnet
Global Moderator
หัวหน้าแก๊งเสียว
*****

พลังน้ำใจ: 269
ออฟไลน์ ออฟไลน์

กระทู้: 2,813



ดูรายละเอียด
« ตอบ #16 เมื่อ: 18 เมษายน 2016, 14:05:45 »

เริ่มจากการ Tune Server หน่อยครับ

ถ้าใช้ innodb ให้เพิ่มขนาด innodb_buffer_pool_size
ถ้าใช้ myisam ให้เพิ่มขนาด key_buffer_size, read_buffer_size, read_rnd_buffer_size

ลอง query show global status like '%tmp%'; หน่อย
ถ้า Created_tmp_tables เยอะ แสดงว่ามีการ select group by หรือ select where or เยอะ ลองปรับดูว่าลดได้ไหม
ถ้า Created_tmp_disk_tables เยอะ แสดงว่าค่า tmp_table_size น้อยไป

ลองดูว่าดีขึ้นไหมครับ

ขอบคุณครับ เดี๋ยวตอนเย็นลองปรับดูครับ
ตอนนี้ลงไป query อย่างว่าได้มาแบบนี้ครับ



Created_tmp_disk_tables = 406
Created_tmp_files = 46
Created_tmp_tables = 3532
บันทึกการเข้า
joei
ก๊วนเสียว
*

พลังน้ำใจ: 41
ออฟไลน์ ออฟไลน์

กระทู้: 221



ดูรายละเอียด
« ตอบ #17 เมื่อ: 18 เมษายน 2016, 16:00:43 »

ขอบคุณครับ เดี๋ยวตอนเย็นลองปรับดูครับ
ตอนนี้ลงไป query อย่างว่าได้มาแบบนี้ครับ

Created_tmp_disk_tables = 406
Created_tmp_files = 46
Created_tmp_tables = 3532

ถือว่าไม่มากนะครับ ยังไงช่วย Query อันนี้หน่อยครับ หากว่า Restart Server ไปแล้ว ฝาก Query อันบนด้วยครับ
ผมอยากเห็นว่าจำนวน select ต่อการสร้าง tmp_tables เป็นอย่างไรครับ
show global status like 'select%';


อ้อ ใช้ innodb หรือ myisam ครับ เพราะว่า myisam จะเป็น lock table เวลาเขียนครับ
ทำให้ถ้าเขียนพร้อมกับอ่าน จะต้องรอกันครับ ต่างกับ innodb จะไม่ lock table
แต่จะ lock row แทน ซึ่งจะทำให้อ่านและเขียนพร้อมกันได้ดีขึ้นครับ
« แก้ไขครั้งสุดท้าย: 18 เมษายน 2016, 16:03:04 โดย joei » บันทึกการเข้า

postmunnet
Global Moderator
หัวหน้าแก๊งเสียว
*****

พลังน้ำใจ: 269
ออฟไลน์ ออฟไลน์

กระทู้: 2,813



ดูรายละเอียด
« ตอบ #18 เมื่อ: 18 เมษายน 2016, 17:21:45 »

ขอบคุณครับ เดี๋ยวตอนเย็นลองปรับดูครับ
ตอนนี้ลงไป query อย่างว่าได้มาแบบนี้ครับ

Created_tmp_disk_tables = 406
Created_tmp_files = 46
Created_tmp_tables = 3532

ถือว่าไม่มากนะครับ ยังไงช่วย Query อันนี้หน่อยครับ หากว่า Restart Server ไปแล้ว ฝาก Query อันบนด้วยครับ
ผมอยากเห็นว่าจำนวน select ต่อการสร้าง tmp_tables เป็นอย่างไรครับ
show global status like 'select%';


อ้อ ใช้ innodb หรือ myisam ครับ เพราะว่า myisam จะเป็น lock table เวลาเขียนครับ
ทำให้ถ้าเขียนพร้อมกับอ่าน จะต้องรอกันครับ ต่างกับ innodb จะไม่ lock table
แต่จะ lock row แทน ซึ่งจะทำให้อ่านและเขียนพร้อมกันได้ดีขึ้นครับ

ตามนี้ครับผม ตอนนี้ผมต้องมาหมั่น restart mysql กับ httpd เรื่อยเลยไม่งั้นล่ม
ขนาดใส่แคชแล้วนะ(แต่ยังไม่ครบทุกจุด)

show global status like 'select%';


show global status like '%tmp%';




บันทึกการเข้า
postmunnet
Global Moderator
หัวหน้าแก๊งเสียว
*****

พลังน้ำใจ: 269
ออฟไลน์ ออฟไลน์

กระทู้: 2,813



ดูรายละเอียด
« ตอบ #19 เมื่อ: 18 เมษายน 2016, 17:28:44 »

ทั้ง 3 table นี้มีการ อ่าน/เขียน อยู่ตลอดเวลาไม่มีพักเลยครับ
ทำงานครบทั้ง select/insert/update

จริงๆ ตอนแรกเหลือแรม 80Mb นะผม restart มันเลยมาได้เท่านี้

บันทึกการเข้า
หน้า: [1] 2   ขึ้นบน
พิมพ์