Pareto’s rule (กฎ 80/20) กับการ Tuning database

สวัสดีครับ ห่างหายกันไปนานพอสมควรกับช่วงวันหยุดยาวเทศกาลสงกรานต์และอากาศร้อนๆ ของประเทศไทย เลยทำให้ผมยิ่งไม่มีสมาธิในการทำอะไรซักเท่าไรนะครับผม ก็วันนี้น่าจะเป็นวันดีที่จะกลับมาเขียนบทความอีกครั้งครับ วันนี้ผมจะนำเอาหลักการหนึ่งที่ถูกใช้กันอย่างแพร่หลายและได้รับยอมรับกันทั่วโลก ซึ่งผมคิดว่าน่าจะมีประโยชน์ต่อการนำมาประยุกต์ใช้ในการจูนนิ่งฐานข้อมูลมาแบ่งปันกันครับ หลักการที่ผมจะพูดถึงนี้มีชื่อว่า “หลักการของพาเรโต (Pareto’s rule)” หรือเรียกกันอย่างแพร่หลายว่า “กฏ 80/20” นั่นเองครับ

Pareto’s rule หรือกฎ 80/20 คือ?

ในปีคริสตศักราช 1906 ได้มีนักเศรษฐศาสตร์ชาวอิตาลีท่านหนึ่งชื่อ “วิลเฟรโด พาเรโต (Vilfredo Pareto)” ได้ทำการสำรวจและวิจัยความมั่งคั่งของประชาชนในประเทศอิตาลีและพบว่า 80% ของความมั่งคั่งในประเทศถูกครอบครองโดยคนกลุ่มหนึ่งซึ่งมีเพียง 20% ของประชากรทั้งหมด และหลังจากที่พาเรโตได้ทำการสำรวจและสร้างกฎ 80/20 ขึ้นมาก็ได้มีนักทดลองและวิจัยอีกหลาย ๆ ท่านได้ทำการทดลองว่ากฎดังกล่าวจะสามารถใช้อธิบายความไม่เท่ากันของสมการนี้ได้หรือไม่ ซึ่งหนึ่งในนักทดลองวิจัยนั้นคือ โจเซฟ จูแรน (Joseph Juran) เป็นนักบริหารคุณภาพรุ่นบุกเบิกในยุคนั้นโดยทำงานอยู่ที่สหรัฐอเมริกาในช่วงทศวรรษที่ 1930 ถึง 1940 ได้ออกมายอมรับสูตรของพาเรโต โดยเขาแถลงว่ากฎดังกล่าวอธิบายถึงสิ่งที่สำคัญหรือมีประโยชน์จะมีอยู่เป็นจำนวนที่น้อยกว่าสิ่งที่ไม่สำคัญหรือไม่มีประโยชน์ซึ่งมีจำนวนที่มากกว่า (Vital few and trivial many) ในอัตราส่วน 20 ต่อ 80 หรือที่เรียกกันว่ากฎ 80/20 ของพาเรโตนั่นเอง

ความหมายของกฎ 80/20?

ความหมายของกฎ 80/20 สามารถอธิบายได้ในหลายแง่มุมมากๆ ครับ ยกตัวอย่างเช่น ในแง่ของธุรกิจ 80% ของรายได้สุทธิของบริษัทอาจจะมาจากลูกค้าเพียง 20% ของลูกค้าทั้งหมด หรือ ยอดขายสุทธิ 80% อาจจะมาจากพนักงานขายที่มีประสิทธิภาพเพียง 20% ของพนักงานขายทั้งหมด เป็นต้นครับ

แนวคิดในเรื่องของกฎ 80/20 นั้น ดูเหมือนจะเป็นหลักสากลที่นิยมใช้กันอย่างกว้างขวางมากครับ แต่ก็ยังเจอที่เข้าใจผิดกันบ่อยๆ เหมือนกันครับ โดยเฉพาะอย่างยิ่งตัวเลข 80 และ 20 ที่พอนำมาตั้งเป็นกฎแล้ว เราก็มักจะไปยึดติดกับตัวเลขสองตัวเลขนี้ ทำให้ในสถานการณ์ต่างๆ เราพยายามหาเจ้าตัว 80% และ 20% ให้ได้ แต่ในความเป็นจริงแล้ว ในสถานการณ์ต่างๆ ตัวเลขไม่จำเป็นต้องเป็น 80 และ 20 ก็ได้ครับ เช่น 80% ของผลสำเร็จที่เกิดขึ้น มาจาก 10% ของความพยายาม (ซึ่งก็จะกลายเป็นกฎ 80/10 ไป) หรืออาจจะเป็น 90/10 ก็ได้

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

ประโยชน์ของ Pareto’s rule คือช่วยทำให้พวกเราได้มุ่งเน้นหรือให้ความสำคัญกับสิ่งที่มีความสำคัญจริงๆ เพียงไม่กี่อย่าง พูดง่ายๆ คือในสิ่งที่เราในแต่ละวันนั้น อาจจะมีสิ่งที่ทำเพียงแค่ไม่กี่เปอร์เซ็นต์ที่มีประโยชน์หรือมีค่าต่อความสำเร็จจริงๆ ดังนั้น เราคงจะต้องหาให้ได้ครับว่าในการทำงานชิ้นหนึ่งๆ อะไรคือส่วนที่เป็นส่วนน้อย แต่ส่งผลกระทบต่อผลสำเร็จส่วนใหญ่ และไม่ว่าอะไรจะเกิดขึ้น สิ่งที่เป็นส่วนน้อยแต่สำคัญ (Vital Few) เป็นสิ่งที่สำคัญ และไม่อาจจะละเลยได้

กฏ 80/20 กับการนำมาใช้ในการจูนนิ่งฐานข้อมูล

สำหรับการจูนนิ่งฐานข้อมูลนั้นขึ้นอยู่กับหลายปัจจัยด้วยกัน โดยในบางครั้งเราสามารถบอกได้ว่าประสิทธิภาพที่ดีขึ้น 80% อาจจะมาจากส่วนของการปรับเปลี่ยนโครงสร้างของแอพพลิเคชั่นที่ไม่เหมาะสม และการจูนนิ่งคิวรี่ที่มีปัญหาเพียง 20% เท่านั้น โดยในส่วนแรกนี้ไม่ใช่หน้าที่ของ DBA โดยตรง มันควรจะเป็นหน้าที่ของเหล่า Developer เอง โดยตัว Developer นั้นต้องมีความสามารถในการจูนนิ่งคิวรี่ที่พบว่ามีปัญหาได้ และเหล่า Developer เองควรมีความรู้ความเข้าใจในการใช้งาน TKPROF และการอ่าน Explain plan, ข้อดีและข้อเสียของ Cost-based และ Rule-based optimizer และบางครั้งการใช้ Optimizer hints ก็มีส่วนช่วยให้ประสิทธิภาพของคิวรี่ดีขึนได้อย่างน่าประหลาดใจเช่นกัน

ส่วนประสิทธิภาพที่สามารถทำให้ดีขึ้นอีก 20% นั้น มาจากการจูนนิ่งพารามิเตอร์และโครงสร้างของฐานข้อมูล ซึ่งหน้าที่ในข้อนี้เป็นของ DBA โดยการลดการใช้ Disk, Memory หรือ I/O contention เพิ่มประสิทธิภาพในการ Sorting หรือจะเป็นความเร็วในการ Checkpoint ซึ่งทั้งหมดสามารถเพิ่มประสิทธิภาพให้กับฐานข้อมูลในภาพกว้างๆ ได้ครับ

สุดท้ายแล้ว Pareto’s rule นั้นก็เป็นแค่ส่วนประกอบหนึ่งที่เรานำมาประยุกต์ใช้เท่านั้น ในการจูนนิ่งฐานข้อมูลนั้นไม่ได้อิงแค่ศาสตร์อย่างเดียวนะครับ จำต้องอาศัยศิลป์เฉพาะตัวของแต่ละท่านเองด้วยนะครับ ทุกอย่างขึ้นอยู่กับตัวท่านเองนะครับ 🙂

ขอบคุณครับ

แหล่งข้อมูลอ้างอิง:
Tuning of Oracle is a three-part process by Don Burleson
แท้จริงแล้วกฎ 80/20 คืออะไร?
Pareto’s rule

Advertisements

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out /  เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out /  เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out /  เปลี่ยนแปลง )

w

Connecting to %s