SlideShare a Scribd company logo
1 of 36
Database Tuning and Caching
                       MySQL + memcached




        ผศ.ดร.เด่นพงษ์ สุดภักดี
                  ผู้ช่วยอธิการบดีฝ่ายวิชาการ และ
       ผู้อานวยการสานักนวัตกรรมการเรียนการสอน
                              มหาวิทยาลัยขอนแก่น


                                                    1
Outline
•   System performance
•   KKU e-Learning (MOODLE)
•   MySQL Tuning
•   Caching using memcached




                              2
System Performance
• No exact solution for the best hardware
  configuration.
  – Focus on RAM  HDD  CPU
  – Separate web server(s) from database server(s)
  – SAS HDD (more expensive)
• Require system monitoring
• Require software tuning
  (web server and database server)
  – Database tuning is a crucial task
    (no exact solution)
• Require optimization and caching
                                                     3
ระบบของมหาวิทยาลัยขอนแก่น




                            4
Khon Kaen University Equipment
• 5 web servers
• 1 main database server
• 1 database replication and network file sharing
  server
• 1 system monitoring server
• 1 media streaming server
• 1 video encoding/rendering server
• SAN storage
  (SAS: 1.5TB and SATA: 8TB)
• Load balancer
                                                    5
Software
• Web server
  –   Ubuntu 9.10 64-bit server
  –   Apache
  –   PHP5
  –   eAccelerator
  –   Memcache
  –   Oracle Instant Connection
  –   MOODLE
• Database server
  – CentOS 64-bit
  – MySQL Enterprise 5.1.44       6
Average Load
• 3,000 users-visits per day
• 30,000 page-views per day




                               7
Monitoring and Alert
• Network Traffic
   – Load balancer software
   – Cacti
   – Google analytics
• Web server monitor and alert
   – Cacti
   – pingdom (pingdom.com)
     (push notification)
• Database monitoring and advisory
   – MySQL Enterprise Monitor
   – MONyog (webyog.com)
                                     8
MySQL
• ปัจจุบันเวอร์ชั่น 5.1.45 (ณ วันที่ 17 มีนาคม 2553)
• http://www.mysql.com/downloads/mysql




                                                       9
Additional Enterprise Features
• Partitioning               • Additional
• Row-based/Hybrid             INFORMATION_SCHEMA
  Replication                  objects
• Event Scheduler            • Faster data import
• XPath Support                operations (parallel file
• Dynamic General/Slow         load)
  Query Log                  • ACID Transactions
• Performance/Load Testing   • Stored Procedures
  Utility (mysqlslap)
• Full Text Search           • Triggers
• Archive engine             • Views
• User session and problem   • Information Schema
  SQL identification         • Pluggable Storage Engine
• MySQL embedded library       Architecture
  (libmysqld)                • Archive Storage Engine
                                                       10
Database Tuning : MySQL
• การตั้งค่า my.cnf
• ตรวจสอบตัวแปรระบบ
  – mysql> SHOW VARIABLES;
  – mysql> SHOW STATUS;
• ผู้ใช้ส่วนใหญ่จะไม่ปรับแต่ง โดยอาจเข้าใจว่าค่า
  default เป็นค่าที่ดีทสุดอยู่แล้ว
                       ี่
• ค่า default บางค่าทาให้ระบบทางานช้า
• การทางานของ MyISAM และ InnoDB ไม่เหมือนกัน
• MySQL มีค่าที่สามารถปรับแต่งได้จานวนมาก
                                               11
ต่า Parameters ที่ควรต้องปรับตั้ง
•   key_buffer_size หรือ innodb_buffer_pool_size
•   innodb_additional_mem_pool_size
•   innodb_log_file_size
•   innodb_log_buffer_size
•   innodb_flush_log_at_trx_commit
•   table_cache
•   thread_cache
•   Threads_Created
•   query_cache_size
•   max_connections
                                                                     12
                         Ref: http://www.mysqlperformanceblog.com/
key_buffer_size (MyISAM)
• ใช้สาหรับ cache index สาหรับ data จะ cache
  โดย OS
• ค่าควรอยู่ที่ประมาณ 30-40% ของหน่วยความจา
• ควรตรวจสอบขนาด key_buffer_size ที่ใช้งานจริง
  เพื่อให้สามารถตั้งค่าให้เหมาะสม ไม่น้อยและไม่มาก
  จนเกินไป
• แม้ว่ามี Table ไม่มาก ก็ควรจะตั้งค่าไว้อย่างน้อย
  16-32 MB สาหรับ indexes ของ temporary table
                                                 13
innodb_buffer_pool_size
• Buffer มีความสาคัญสาหรับ Innodb มากกว่า
  MyISAM
• ค่า default ของ innodb_buffer_pool_size มักจะไม่
  เหมาะสมกับการใช้งานจริง ซึ่งขึ้นกับจานวนและ
  ขนาดของ database ที่ใช้
• ค่า Innodb buffer pool จะ cache ทั้ง data และ
  index pages ดังนันไม่จาเป็นต้องกังวลเรื่อง OS
                    ้
  cache ทาให้สามารถตั้งค่าอยู่ระหว่าง 70-80% ของ
  เครื่อง สาหรับการใช้ Innodb เพียงอย่างเดียวใน
  เครื่อง                                       14
innodb_additional_mem_pool_size
• ค่านี้อาจไม่มีผลต่อสมรรถนะมากนัก โดยเฉพาะ
  อย่างยิ่งสาหรับความสามารถของหน่วยความจาใน
  ปัจจุบัน
• อย่างน้อยควรตั้งค่าไว้ประมาณ 20MB (หรือ
  มากกว่า) สาหรับการใช้งานทั่วๆ ไปของ MySQL
  ยามจาเป็น



                                              15
innodb_log_file_size
• เป็นค่าที่มีความสาคัญมาก โดยเฉพาะอย่างยิ่งใน
  ระบบที่มีการเขียนข้อมูลจานวนมาก
• ขนาด log file ที่ใหญ่ จะทาให้สมรรถนะการทางานดี
  แต่จะส่งผลต่อเวลาในการอ่านไฟล์ภายหลัง
• โดยปกติจะควรตั้งค่าประมาณ 64MB – 512MB




                                              16
innodb_log_buffer_size
• ค่า default มักจะใช้ได้ดี ในกรณีที่มีการเขียนข้อมูล
  ปานกลาง และมีการเรียกใช้เป็นระยะสั้นๆ
• ไม่จาเป็นต้องมีการตังค่าสูงจนเกินไป เนื่องจากจะมี
                       ้
  การ flush ทุกๆ 1 วินาทีอยู่แล้ว การตั้งสูงเกินไปจะ
  เปลืองหน่วยความจาโดยเปล่าประโยชน์
• โดยทั่วไป ขนาด 8MB - 16MB เพียงพอต่อการใช้
  งาน
• ในระบบขนาดเล็กสามารถตั้งค่าที่น้อยกว่านี้ได้
                                                        17
innodb_flush_log_at_trx_commit
• ค่า default คือ 1 จะทาให้มีการ flush log ไปเก็บไว้
  ในฮาร์ดดิสในทุกๆ transaction ซึ่งจะทาให้ต้องเขียน
  ฮาร์ดดิสบ่อย ทาให้การทางานช้า
• ในระบบที่มีการเปลี่ยนการใช้งานจาก MyISAM เช่น
  MOODLE ควรตั้งค่าเป็น 2 ซึ่งจะทาให้ทาการ flush
  log ไปไว้ที่ OS cache ก่อน แล้วจะเขียนลงฮาร์ดดิส
  ทุกๆ 1-2 วินาที

                                                   18
table_cache
• ในการเรียกใช้ table จาเป็นต้องเขียนไฟล์เพื่อใช้
  ทราบว่ามีการเปิดใช้งาน table ใช้งานนั้นอยู่แล้ว
  การต้องเรียกเปิดบ่อยๆ ทาให้สมรรถนะการทางาน
  ไม่ดี
• ขนาดของ table cache ควรจะมากพอในการเกิบค่า
  ตารางที่เปิดใช้งานไว้ได้
• การตั้งค่าไว้ประมาณ 1024 เพียงพอสาหรับระบบที่
  มี ประมาณ 200 – 400 ตาราง หรืออาจตั้งเพิ่มได้
  กรณีมีตารางจานวนมาก                           19
query_cache_size
• ในระบบที่มีการอ่าน database มากและไม่มีระบบ
  cache ของโปรแกรม การตั้งค่านี้จะทาให้ระบบ
  ทางานเร็วขึ้น
• การตั้งค่าที่มากเกินไปจะทาให้ระบบทางานช้าลงได้
• การตั้งค่าระหว่าง 32M - 512M เป็นค่าที่เหมาะสม




                                                   20
สิบตัวแปรที่ต้องติดตามดู
1. Threads_connected
  – แสดงจานวน client ทั้งหมดที่กาลังติดต่อกับ server

  – เป็นข้อมูล real-time ทีช่วยในการวิเคราะห์จานวนผู้ใช้
                           ่
    และสามารถตรวจสอบเวลาทีเหมาะสมในการ restart
                                 ่
    ระบบได้



                                                           21
สิบตัวแปรที่ต้องติดตามดู
2. Created_tmp_disk_tables
  – แสดงจานวน temporary table ทีถูกสร้างขึ้นใน
                                 ่
    ฮาร์ดดิสก์แทนทีจะเป็นในหน่วยความจา
                   ่

  – การใช้งาน table ที่เขียนไว้ในฮาร์ดดิสก์จะช้ากว่า table
    ในหน่วยความจา ดังนั้นการใช้ query CREATE
    TEMPORARY TABLE จะช้าโดยเฉพาะอย่างยิ่งหากค่านี้
    สูง

                                                        22
สิบตัวแปรที่ต้องติดตามดู
3. Handler_read_first
  – แสดงจานวนครั้งที่ตัวจัดการตาราง (table handler)
    อ่านค่าแถวแรกของ index ในตาราง

  – การอ่าน แถวแรกของ index นั้นหมายถึงการอ่าน scan
    index ทั้งตาราง ซึ่งแสดงว่าตาราง index ไว้ไม่ดี



                                                      23
สิบตัวแปรที่ต้องติดตามดู
4. Innodb_buffer_pool_wait_free
  – แสดงจานวนครั้งที่ MySQL รอให้มีการ flush
    หน่วยความจา

  – ถ้าค่านี้มีค่าสูง อาจจะเกิดจากการตั้งค่า buffer ของ
    หน่วยความจาไว้ไม่เหมาะสม



                                                          24
สิบตัวแปรที่ต้องติดตามดู
5. Key_reads
  – แสดงจานวนครั้งที่ filesystem เรียกใช้ MySQL เพื่ออ่าน
    index

  – การที่ filesystem อ่าน index ของฐานข้อมูลจะทาให้
    สมรรถนะของ query ไม่ดี การที่คานี้สูงแสดงว่าค่า key
                                     ่
    cache ไม่เหมาะสม


                                                       25
สิบตัวแปรที่ต้องติดตามดู
6. Max_used_connections
  – แสดงจานวนการเชื่อมต่อที่มากที่สุดนับตั้งแต่ MySQL
    สตาร์ทครั้งล่าสุด

  – ใช้สาหรับวิเคราะห์การเชื่อมต่อเพื่อให้สามารถปรับปรุง
    server ให้รองรับการใช้งานได้อย่างเหมาะสม



                                                           26
สิบตัวแปรที่ต้องติดตามดู
7. Open_tables
  – แสดจานวน Table ที่เปิดอยู่ ณ ขณะนั้น

  – หากค่านี้มีค่าต่า ในขณะที่ค่า table_cache สูงจะทาให้
    สามารถลด cache ได้ ในทางกลับกันค่านี้สูงแต่
    table_cache ต่า ควรเพิ่มค่า cache ได้



                                                           27
สิบตัวแปรที่ต้องติดตามดู
8. Select_full_join
  – แสดงจานวนของ full joins ที่ MySQL ได้ทาผ่านมา

  – หากค่านี้สูงแสดงว่ามีการเรียกใช้ full table joins ซึ่ง
    สมรรถนะไม่ดี ควรแก้ไขให้ใช้ index มากขึ้น




                                                             28
สิบตัวแปรที่ต้องติดตามดู
9. Slow_queries
  – แสดงจานวน query ทีใช้เวลาในการประมวลผลนาน
                      ่
    กว่าปกติ

  – แสดงว่าการเขียนโปรแกรมเรียก query ไม่ดีจึงสามารถ
    หาแนวทางในการปรับเปลี่ยน query ได้



                                                   29
สิบตัวแปรที่ต้องติดตามดู
10. Uptime
  – แสดงจานวนวินาทีที่ MySQL สตาร์ทครั้งล่าสุด

  – หากค่านี้ต่าแสดงว่ามีการ restart MySQL บ่อย ซึ่งเป็น
    โอกาสในการทางานของระบบทีไม่ดี ่




                                                       30
memcached
memcached เป็นโปรแกรมที่
มีสมรรถนะสูง ทาหน้าที่
กระจายค่าต่างๆ ไว้ใน
หน่วยความจาร่วม ซึ่งจะทาให้
สามารถเรียกใช้ dynamic
web เพื่อให้ลดภาระของ
database ลงได้
        (http://memcached.org/)
                                  31
การ caching ข้อมูลด้วย memcached




                                   32
เครื่องมือในการตรวจสอบการทางาน
• tuning-primer
    https://launchpad.net/mysql-tuning-primer
• mysqlslap (สาหรับ MySQL 5.1+)
   # ./mysqlslap --user=root --auto-generate-sql --concurrency=100 --iterations=5

• mysql-stress-test.pl
   MySQL Stress Test Program




                                                                                33
MySQL Monitoring and Screenshots
•   MySQL Enterprise Monitoring (Subscription)
•   Cacti
•   MONyog
•   phpMyAdmin




                                                 34
Monitoring screenshots




                         35
Download this presentation
  http://slideshare.net/denpong
Contacts
  email:    denpong@kku.ac.th
  Twitter:  @denpong
  Facebook: denpong               36

More Related Content

Viewers also liked

บทที่ 2 (1)
บทที่ 2 (1)บทที่ 2 (1)
บทที่ 2 (1)nopphanut
 
Spat Db 3 Intro Sql
Spat Db 3 Intro SqlSpat Db 3 Intro Sql
Spat Db 3 Intro Sqlphisan_chula
 
การสร้างเอกสาร Rdfs ของ University Taxonomy และ การ Query โดยใช้ Sesame
การสร้างเอกสาร Rdfs ของ University Taxonomy และ การ Query โดยใช้ Sesameการสร้างเอกสาร Rdfs ของ University Taxonomy และ การ Query โดยใช้ Sesame
การสร้างเอกสาร Rdfs ของ University Taxonomy และ การ Query โดยใช้ Sesamesommany
 
Basic - Oracle Edition Based Redefinition Presentation
Basic - Oracle Edition Based Redefinition PresentationBasic - Oracle Edition Based Redefinition Presentation
Basic - Oracle Edition Based Redefinition PresentationN/A
 
Oracle Database 11g Product Family
Oracle Database 11g Product FamilyOracle Database 11g Product Family
Oracle Database 11g Product FamilyN/A
 
วันที่3 opd@seasun
วันที่3 opd@seasunวันที่3 opd@seasun
วันที่3 opd@seasunKomen Chawarit
 
วันที่2 การบันทึกข้อมูล ncd เพื่อส่งออก 43 แฟ้ม
วันที่2 การบันทึกข้อมูล ncd เพื่อส่งออก 43 แฟ้มวันที่2 การบันทึกข้อมูล ncd เพื่อส่งออก 43 แฟ้ม
วันที่2 การบันทึกข้อมูล ncd เพื่อส่งออก 43 แฟ้มKomen Chawarit
 
การบันทึกข้อมูล 43 แฟ้ม แฟ้ม 7 d
การบันทึกข้อมูล 43 แฟ้ม แฟ้ม 7 dการบันทึกข้อมูล 43 แฟ้ม แฟ้ม 7 d
การบันทึกข้อมูล 43 แฟ้ม แฟ้ม 7 dณัชพล สีภูงา
 
PowerPoint การสร้างเว็บ
PowerPoint การสร้างเว็บPowerPoint การสร้างเว็บ
PowerPoint การสร้างเว็บpatiyachat
 
การบันทึกข้อมูลใน hostxp/hosxp_pcu ประเภท PP เพื่อส่งออก 50 แฟ้ม
การบันทึกข้อมูลใน hostxp/hosxp_pcu ประเภท PP เพื่อส่งออก 50 แฟ้มการบันทึกข้อมูลใน hostxp/hosxp_pcu ประเภท PP เพื่อส่งออก 50 แฟ้ม
การบันทึกข้อมูลใน hostxp/hosxp_pcu ประเภท PP เพื่อส่งออก 50 แฟ้มร้าน เคโอ สเต็กและกาแฟสด
 

Viewers also liked (20)

บทที่ 2 (1)
บทที่ 2 (1)บทที่ 2 (1)
บทที่ 2 (1)
 
Spat Db 3 Intro Sql
Spat Db 3 Intro SqlSpat Db 3 Intro Sql
Spat Db 3 Intro Sql
 
ภาษา Sql
ภาษา Sqlภาษา Sql
ภาษา Sql
 
07 sql
07 sql07 sql
07 sql
 
การสร้างเอกสาร Rdfs ของ University Taxonomy และ การ Query โดยใช้ Sesame
การสร้างเอกสาร Rdfs ของ University Taxonomy และ การ Query โดยใช้ Sesameการสร้างเอกสาร Rdfs ของ University Taxonomy และ การ Query โดยใช้ Sesame
การสร้างเอกสาร Rdfs ของ University Taxonomy และ การ Query โดยใช้ Sesame
 
Basic - Oracle Edition Based Redefinition Presentation
Basic - Oracle Edition Based Redefinition PresentationBasic - Oracle Edition Based Redefinition Presentation
Basic - Oracle Edition Based Redefinition Presentation
 
Web 2.0 สู่ Library 2.0
Web 2.0 สู่ Library 2.0Web 2.0 สู่ Library 2.0
Web 2.0 สู่ Library 2.0
 
Oracle Database 11g Product Family
Oracle Database 11g Product FamilyOracle Database 11g Product Family
Oracle Database 11g Product Family
 
Unit1 1
Unit1 1Unit1 1
Unit1 1
 
วันที่3 opd@seasun
วันที่3 opd@seasunวันที่3 opd@seasun
วันที่3 opd@seasun
 
วันที่2 การบันทึกข้อมูล ncd เพื่อส่งออก 43 แฟ้ม
วันที่2 การบันทึกข้อมูล ncd เพื่อส่งออก 43 แฟ้มวันที่2 การบันทึกข้อมูล ncd เพื่อส่งออก 43 แฟ้ม
วันที่2 การบันทึกข้อมูล ncd เพื่อส่งออก 43 แฟ้ม
 
การบันทึกข้อมูล 43 แฟ้ม แฟ้ม 7 d
การบันทึกข้อมูล 43 แฟ้ม แฟ้ม 7 dการบันทึกข้อมูล 43 แฟ้ม แฟ้ม 7 d
การบันทึกข้อมูล 43 แฟ้ม แฟ้ม 7 d
 
EbookPictureFormat
EbookPictureFormatEbookPictureFormat
EbookPictureFormat
 
Semantic web and library
Semantic web and librarySemantic web and library
Semantic web and library
 
1 system setting&กำหนดรหัสมาตรฐาน
1 system setting&กำหนดรหัสมาตรฐาน1 system setting&กำหนดรหัสมาตรฐาน
1 system setting&กำหนดรหัสมาตรฐาน
 
บทที่ 4
บทที่ 4 บทที่ 4
บทที่ 4
 
lesson3 JSP
lesson3 JSPlesson3 JSP
lesson3 JSP
 
PowerPoint การสร้างเว็บ
PowerPoint การสร้างเว็บPowerPoint การสร้างเว็บ
PowerPoint การสร้างเว็บ
 
การบันทึกข้อมูลใน hostxp/hosxp_pcu ประเภท PP เพื่อส่งออก 50 แฟ้ม
การบันทึกข้อมูลใน hostxp/hosxp_pcu ประเภท PP เพื่อส่งออก 50 แฟ้มการบันทึกข้อมูลใน hostxp/hosxp_pcu ประเภท PP เพื่อส่งออก 50 แฟ้ม
การบันทึกข้อมูลใน hostxp/hosxp_pcu ประเภท PP เพื่อส่งออก 50 แฟ้ม
 
php5new
php5newphp5new
php5new
 

Similar to Database Tuning for e-Learning

MySQL Multi-Master Replication Using Tungsten Replicator 2.0.5
MySQL Multi-Master Replication Using Tungsten Replicator 2.0.5MySQL Multi-Master Replication Using Tungsten Replicator 2.0.5
MySQL Multi-Master Replication Using Tungsten Replicator 2.0.5Nont Banditwong
 
Operating System Chapter 1
Operating System Chapter 1Operating System Chapter 1
Operating System Chapter 1Nuth Otanasap
 
10 ca-mass-storage system structure (wichet p.'s conflicted copy 2012-12-17)
10 ca-mass-storage system structure (wichet p.'s conflicted copy 2012-12-17)10 ca-mass-storage system structure (wichet p.'s conflicted copy 2012-12-17)
10 ca-mass-storage system structure (wichet p.'s conflicted copy 2012-12-17)krissapat
 
Hardware
HardwareHardware
Hardwaresa
 
บทที่ 2 (21 02-56) okรันเลขแล้ว(แก้เหมายเลขหน้าด้วย ตั้งแต่หน้า 9 เป็นต้นไป )...
บทที่ 2 (21 02-56) okรันเลขแล้ว(แก้เหมายเลขหน้าด้วย ตั้งแต่หน้า 9 เป็นต้นไป )...บทที่ 2 (21 02-56) okรันเลขแล้ว(แก้เหมายเลขหน้าด้วย ตั้งแต่หน้า 9 เป็นต้นไป )...
บทที่ 2 (21 02-56) okรันเลขแล้ว(แก้เหมายเลขหน้าด้วย ตั้งแต่หน้า 9 เป็นต้นไป )...Sarawut Panchon
 
Scalable Distributed Data Structures for Internet Construction
Scalable Distributed Data Structures for Internet ConstructionScalable Distributed Data Structures for Internet Construction
Scalable Distributed Data Structures for Internet Constructionknopporn
 
คำศัพท์เกี่ยวกับคอมพิวเตอร์ที่น่าสนใจ
คำศัพท์เกี่ยวกับคอมพิวเตอร์ที่น่าสนใจคำศัพท์เกี่ยวกับคอมพิวเตอร์ที่น่าสนใจ
คำศัพท์เกี่ยวกับคอมพิวเตอร์ที่น่าสนใจนายอุุเทน มาดา
 
บทที่ 1 แนวคิดทั่วไปเกี่ยวกับฐานข้อมูล
บทที่ 1 แนวคิดทั่วไปเกี่ยวกับฐานข้อมูลบทที่ 1 แนวคิดทั่วไปเกี่ยวกับฐานข้อมูล
บทที่ 1 แนวคิดทั่วไปเกี่ยวกับฐานข้อมูลRungnapa Rungnapa
 
บทที่ 1 แนวคิดทั่วไปเกี่ยวกับฐานข้อมูล
บทที่ 1 แนวคิดทั่วไปเกี่ยวกับฐานข้อมูลบทที่ 1 แนวคิดทั่วไปเกี่ยวกับฐานข้อมูล
บทที่ 1 แนวคิดทั่วไปเกี่ยวกับฐานข้อมูลRungnapa Rungnapa
 
หน่วยประมวลผลของเครื่องคอมพิวเตอร์
หน่วยประมวลผลของเครื่องคอมพิวเตอร์หน่วยประมวลผลของเครื่องคอมพิวเตอร์
หน่วยประมวลผลของเครื่องคอมพิวเตอร์Ammarirat
 
หน่วยประมวลผลของเครื่องคอมพิวเตอร์
หน่วยประมวลผลของเครื่องคอมพิวเตอร์หน่วยประมวลผลของเครื่องคอมพิวเตอร์
หน่วยประมวลผลของเครื่องคอมพิวเตอร์Ammarirat
 
Ch 2 process
Ch 2 processCh 2 process
Ch 2 processporpat21
 
Chapter3 processing unit
Chapter3 processing unitChapter3 processing unit
Chapter3 processing unitAdul Yimngam
 

Similar to Database Tuning for e-Learning (20)

MySQL Multi-Master Replication Using Tungsten Replicator 2.0.5
MySQL Multi-Master Replication Using Tungsten Replicator 2.0.5MySQL Multi-Master Replication Using Tungsten Replicator 2.0.5
MySQL Multi-Master Replication Using Tungsten Replicator 2.0.5
 
Operating System Chapter 1
Operating System Chapter 1Operating System Chapter 1
Operating System Chapter 1
 
Lecture9
Lecture9Lecture9
Lecture9
 
Computer systemarchitecture
Computer systemarchitectureComputer systemarchitecture
Computer systemarchitecture
 
Managing Big Data with Apache Hadoop.pdf
Managing Big Data with Apache Hadoop.pdfManaging Big Data with Apache Hadoop.pdf
Managing Big Data with Apache Hadoop.pdf
 
Slide10 memory management
Slide10 memory managementSlide10 memory management
Slide10 memory management
 
10 ca-mass-storage system structure (wichet p.'s conflicted copy 2012-12-17)
10 ca-mass-storage system structure (wichet p.'s conflicted copy 2012-12-17)10 ca-mass-storage system structure (wichet p.'s conflicted copy 2012-12-17)
10 ca-mass-storage system structure (wichet p.'s conflicted copy 2012-12-17)
 
Hardware
HardwareHardware
Hardware
 
บทที่ 2 (21 02-56) okรันเลขแล้ว(แก้เหมายเลขหน้าด้วย ตั้งแต่หน้า 9 เป็นต้นไป )...
บทที่ 2 (21 02-56) okรันเลขแล้ว(แก้เหมายเลขหน้าด้วย ตั้งแต่หน้า 9 เป็นต้นไป )...บทที่ 2 (21 02-56) okรันเลขแล้ว(แก้เหมายเลขหน้าด้วย ตั้งแต่หน้า 9 เป็นต้นไป )...
บทที่ 2 (21 02-56) okรันเลขแล้ว(แก้เหมายเลขหน้าด้วย ตั้งแต่หน้า 9 เป็นต้นไป )...
 
Scalable Distributed Data Structures for Internet Construction
Scalable Distributed Data Structures for Internet ConstructionScalable Distributed Data Structures for Internet Construction
Scalable Distributed Data Structures for Internet Construction
 
Kafka for developer
Kafka for developerKafka for developer
Kafka for developer
 
Ch10 web servers
Ch10 web serversCh10 web servers
Ch10 web servers
 
คำศัพท์เกี่ยวกับคอมพิวเตอร์ที่น่าสนใจ
คำศัพท์เกี่ยวกับคอมพิวเตอร์ที่น่าสนใจคำศัพท์เกี่ยวกับคอมพิวเตอร์ที่น่าสนใจ
คำศัพท์เกี่ยวกับคอมพิวเตอร์ที่น่าสนใจ
 
บทที่ 1
บทที่ 1บทที่ 1
บทที่ 1
 
บทที่ 1 แนวคิดทั่วไปเกี่ยวกับฐานข้อมูล
บทที่ 1 แนวคิดทั่วไปเกี่ยวกับฐานข้อมูลบทที่ 1 แนวคิดทั่วไปเกี่ยวกับฐานข้อมูล
บทที่ 1 แนวคิดทั่วไปเกี่ยวกับฐานข้อมูล
 
บทที่ 1 แนวคิดทั่วไปเกี่ยวกับฐานข้อมูล
บทที่ 1 แนวคิดทั่วไปเกี่ยวกับฐานข้อมูลบทที่ 1 แนวคิดทั่วไปเกี่ยวกับฐานข้อมูล
บทที่ 1 แนวคิดทั่วไปเกี่ยวกับฐานข้อมูล
 
หน่วยประมวลผลของเครื่องคอมพิวเตอร์
หน่วยประมวลผลของเครื่องคอมพิวเตอร์หน่วยประมวลผลของเครื่องคอมพิวเตอร์
หน่วยประมวลผลของเครื่องคอมพิวเตอร์
 
หน่วยประมวลผลของเครื่องคอมพิวเตอร์
หน่วยประมวลผลของเครื่องคอมพิวเตอร์หน่วยประมวลผลของเครื่องคอมพิวเตอร์
หน่วยประมวลผลของเครื่องคอมพิวเตอร์
 
Ch 2 process
Ch 2 processCh 2 process
Ch 2 process
 
Chapter3 processing unit
Chapter3 processing unitChapter3 processing unit
Chapter3 processing unit
 

More from Denpong Soodphakdee

Graduate Skills for Digital Age Employability
Graduate Skills for Digital Age EmployabilityGraduate Skills for Digital Age Employability
Graduate Skills for Digital Age EmployabilityDenpong Soodphakdee
 
Smart Living, Learning, & Working @KKU
Smart Living, Learning, & Working @KKUSmart Living, Learning, & Working @KKU
Smart Living, Learning, & Working @KKUDenpong Soodphakdee
 
Balancing Graduate Skills for Digital Age Employability
Balancing Graduate Skills for Digital Age EmployabilityBalancing Graduate Skills for Digital Age Employability
Balancing Graduate Skills for Digital Age EmployabilityDenpong Soodphakdee
 
Living, Learning, & Working Smart @KKU
Living, Learning, & Working Smart @KKULiving, Learning, & Working Smart @KKU
Living, Learning, & Working Smart @KKUDenpong Soodphakdee
 
Concept of e-Learning and its Applications
Concept of e-Learning and its ApplicationsConcept of e-Learning and its Applications
Concept of e-Learning and its ApplicationsDenpong Soodphakdee
 
ICT Administration in Modern Education Institute
ICT Administration in Modern Education InstituteICT Administration in Modern Education Institute
ICT Administration in Modern Education InstituteDenpong Soodphakdee
 
Communication in Modern Organization
Communication in Modern OrganizationCommunication in Modern Organization
Communication in Modern OrganizationDenpong Soodphakdee
 
Social Medias in Library Service
Social Medias in Library ServiceSocial Medias in Library Service
Social Medias in Library ServiceDenpong Soodphakdee
 
Net Zero Energy Building @ Khon Kaen University
Net Zero Energy Building @ Khon Kaen UniversityNet Zero Energy Building @ Khon Kaen University
Net Zero Energy Building @ Khon Kaen UniversityDenpong Soodphakdee
 
Higher Education for 21st Century Learners
Higher Education for 21st Century LearnersHigher Education for 21st Century Learners
Higher Education for 21st Century LearnersDenpong Soodphakdee
 
Flipped Classroom at Khon Kaen University
Flipped Classroom at Khon Kaen UniversityFlipped Classroom at Khon Kaen University
Flipped Classroom at Khon Kaen UniversityDenpong Soodphakdee
 
Technology Skills Required to be a Success Secretary
Technology Skills Required to be a Success SecretaryTechnology Skills Required to be a Success Secretary
Technology Skills Required to be a Success SecretaryDenpong Soodphakdee
 
Cloud Computing and Open Educational Resources
Cloud Computing and Open Educational ResourcesCloud Computing and Open Educational Resources
Cloud Computing and Open Educational ResourcesDenpong Soodphakdee
 

More from Denpong Soodphakdee (20)

Graduate Skills for Digital Age Employability
Graduate Skills for Digital Age EmployabilityGraduate Skills for Digital Age Employability
Graduate Skills for Digital Age Employability
 
Smart Living, Learning, & Working @KKU
Smart Living, Learning, & Working @KKUSmart Living, Learning, & Working @KKU
Smart Living, Learning, & Working @KKU
 
Balancing Graduate Skills for Digital Age Employability
Balancing Graduate Skills for Digital Age EmployabilityBalancing Graduate Skills for Digital Age Employability
Balancing Graduate Skills for Digital Age Employability
 
Living, Learning, & Working Smart @KKU
Living, Learning, & Working Smart @KKULiving, Learning, & Working Smart @KKU
Living, Learning, & Working Smart @KKU
 
New Media in Digital Age
New Media in Digital AgeNew Media in Digital Age
New Media in Digital Age
 
21st century learning skills
21st century learning skills21st century learning skills
21st century learning skills
 
ICT in Modern Education
ICT in Modern EducationICT in Modern Education
ICT in Modern Education
 
New Learning Paradigm
New Learning ParadigmNew Learning Paradigm
New Learning Paradigm
 
Concept of e-Learning and its Applications
Concept of e-Learning and its ApplicationsConcept of e-Learning and its Applications
Concept of e-Learning and its Applications
 
KKU General Education 3.0
KKU General Education 3.0KKU General Education 3.0
KKU General Education 3.0
 
ICT Administration in Modern Education Institute
ICT Administration in Modern Education InstituteICT Administration in Modern Education Institute
ICT Administration in Modern Education Institute
 
Communication in Modern Organization
Communication in Modern OrganizationCommunication in Modern Organization
Communication in Modern Organization
 
Social Medias in Library Service
Social Medias in Library ServiceSocial Medias in Library Service
Social Medias in Library Service
 
Net Zero Energy Building @ Khon Kaen University
Net Zero Energy Building @ Khon Kaen UniversityNet Zero Energy Building @ Khon Kaen University
Net Zero Energy Building @ Khon Kaen University
 
Higher Education for 21st Century Learners
Higher Education for 21st Century LearnersHigher Education for 21st Century Learners
Higher Education for 21st Century Learners
 
Flipped Classroom at Khon Kaen University
Flipped Classroom at Khon Kaen UniversityFlipped Classroom at Khon Kaen University
Flipped Classroom at Khon Kaen University
 
Technology Skills Required to be a Success Secretary
Technology Skills Required to be a Success SecretaryTechnology Skills Required to be a Success Secretary
Technology Skills Required to be a Success Secretary
 
Google Apps - KKU Experiences
Google Apps - KKU ExperiencesGoogle Apps - KKU Experiences
Google Apps - KKU Experiences
 
Video the Major Player in OERs
Video the Major Player in OERsVideo the Major Player in OERs
Video the Major Player in OERs
 
Cloud Computing and Open Educational Resources
Cloud Computing and Open Educational ResourcesCloud Computing and Open Educational Resources
Cloud Computing and Open Educational Resources
 

Database Tuning for e-Learning

  • 1. Database Tuning and Caching MySQL + memcached ผศ.ดร.เด่นพงษ์ สุดภักดี ผู้ช่วยอธิการบดีฝ่ายวิชาการ และ ผู้อานวยการสานักนวัตกรรมการเรียนการสอน มหาวิทยาลัยขอนแก่น 1
  • 2. Outline • System performance • KKU e-Learning (MOODLE) • MySQL Tuning • Caching using memcached 2
  • 3. System Performance • No exact solution for the best hardware configuration. – Focus on RAM  HDD  CPU – Separate web server(s) from database server(s) – SAS HDD (more expensive) • Require system monitoring • Require software tuning (web server and database server) – Database tuning is a crucial task (no exact solution) • Require optimization and caching 3
  • 5. Khon Kaen University Equipment • 5 web servers • 1 main database server • 1 database replication and network file sharing server • 1 system monitoring server • 1 media streaming server • 1 video encoding/rendering server • SAN storage (SAS: 1.5TB and SATA: 8TB) • Load balancer 5
  • 6. Software • Web server – Ubuntu 9.10 64-bit server – Apache – PHP5 – eAccelerator – Memcache – Oracle Instant Connection – MOODLE • Database server – CentOS 64-bit – MySQL Enterprise 5.1.44 6
  • 7. Average Load • 3,000 users-visits per day • 30,000 page-views per day 7
  • 8. Monitoring and Alert • Network Traffic – Load balancer software – Cacti – Google analytics • Web server monitor and alert – Cacti – pingdom (pingdom.com) (push notification) • Database monitoring and advisory – MySQL Enterprise Monitor – MONyog (webyog.com) 8
  • 9. MySQL • ปัจจุบันเวอร์ชั่น 5.1.45 (ณ วันที่ 17 มีนาคม 2553) • http://www.mysql.com/downloads/mysql 9
  • 10. Additional Enterprise Features • Partitioning • Additional • Row-based/Hybrid INFORMATION_SCHEMA Replication objects • Event Scheduler • Faster data import • XPath Support operations (parallel file • Dynamic General/Slow load) Query Log • ACID Transactions • Performance/Load Testing • Stored Procedures Utility (mysqlslap) • Full Text Search • Triggers • Archive engine • Views • User session and problem • Information Schema SQL identification • Pluggable Storage Engine • MySQL embedded library Architecture (libmysqld) • Archive Storage Engine 10
  • 11. Database Tuning : MySQL • การตั้งค่า my.cnf • ตรวจสอบตัวแปรระบบ – mysql> SHOW VARIABLES; – mysql> SHOW STATUS; • ผู้ใช้ส่วนใหญ่จะไม่ปรับแต่ง โดยอาจเข้าใจว่าค่า default เป็นค่าที่ดีทสุดอยู่แล้ว ี่ • ค่า default บางค่าทาให้ระบบทางานช้า • การทางานของ MyISAM และ InnoDB ไม่เหมือนกัน • MySQL มีค่าที่สามารถปรับแต่งได้จานวนมาก 11
  • 12. ต่า Parameters ที่ควรต้องปรับตั้ง • key_buffer_size หรือ innodb_buffer_pool_size • innodb_additional_mem_pool_size • innodb_log_file_size • innodb_log_buffer_size • innodb_flush_log_at_trx_commit • table_cache • thread_cache • Threads_Created • query_cache_size • max_connections 12 Ref: http://www.mysqlperformanceblog.com/
  • 13. key_buffer_size (MyISAM) • ใช้สาหรับ cache index สาหรับ data จะ cache โดย OS • ค่าควรอยู่ที่ประมาณ 30-40% ของหน่วยความจา • ควรตรวจสอบขนาด key_buffer_size ที่ใช้งานจริง เพื่อให้สามารถตั้งค่าให้เหมาะสม ไม่น้อยและไม่มาก จนเกินไป • แม้ว่ามี Table ไม่มาก ก็ควรจะตั้งค่าไว้อย่างน้อย 16-32 MB สาหรับ indexes ของ temporary table 13
  • 14. innodb_buffer_pool_size • Buffer มีความสาคัญสาหรับ Innodb มากกว่า MyISAM • ค่า default ของ innodb_buffer_pool_size มักจะไม่ เหมาะสมกับการใช้งานจริง ซึ่งขึ้นกับจานวนและ ขนาดของ database ที่ใช้ • ค่า Innodb buffer pool จะ cache ทั้ง data และ index pages ดังนันไม่จาเป็นต้องกังวลเรื่อง OS ้ cache ทาให้สามารถตั้งค่าอยู่ระหว่าง 70-80% ของ เครื่อง สาหรับการใช้ Innodb เพียงอย่างเดียวใน เครื่อง 14
  • 15. innodb_additional_mem_pool_size • ค่านี้อาจไม่มีผลต่อสมรรถนะมากนัก โดยเฉพาะ อย่างยิ่งสาหรับความสามารถของหน่วยความจาใน ปัจจุบัน • อย่างน้อยควรตั้งค่าไว้ประมาณ 20MB (หรือ มากกว่า) สาหรับการใช้งานทั่วๆ ไปของ MySQL ยามจาเป็น 15
  • 16. innodb_log_file_size • เป็นค่าที่มีความสาคัญมาก โดยเฉพาะอย่างยิ่งใน ระบบที่มีการเขียนข้อมูลจานวนมาก • ขนาด log file ที่ใหญ่ จะทาให้สมรรถนะการทางานดี แต่จะส่งผลต่อเวลาในการอ่านไฟล์ภายหลัง • โดยปกติจะควรตั้งค่าประมาณ 64MB – 512MB 16
  • 17. innodb_log_buffer_size • ค่า default มักจะใช้ได้ดี ในกรณีที่มีการเขียนข้อมูล ปานกลาง และมีการเรียกใช้เป็นระยะสั้นๆ • ไม่จาเป็นต้องมีการตังค่าสูงจนเกินไป เนื่องจากจะมี ้ การ flush ทุกๆ 1 วินาทีอยู่แล้ว การตั้งสูงเกินไปจะ เปลืองหน่วยความจาโดยเปล่าประโยชน์ • โดยทั่วไป ขนาด 8MB - 16MB เพียงพอต่อการใช้ งาน • ในระบบขนาดเล็กสามารถตั้งค่าที่น้อยกว่านี้ได้ 17
  • 18. innodb_flush_log_at_trx_commit • ค่า default คือ 1 จะทาให้มีการ flush log ไปเก็บไว้ ในฮาร์ดดิสในทุกๆ transaction ซึ่งจะทาให้ต้องเขียน ฮาร์ดดิสบ่อย ทาให้การทางานช้า • ในระบบที่มีการเปลี่ยนการใช้งานจาก MyISAM เช่น MOODLE ควรตั้งค่าเป็น 2 ซึ่งจะทาให้ทาการ flush log ไปไว้ที่ OS cache ก่อน แล้วจะเขียนลงฮาร์ดดิส ทุกๆ 1-2 วินาที 18
  • 19. table_cache • ในการเรียกใช้ table จาเป็นต้องเขียนไฟล์เพื่อใช้ ทราบว่ามีการเปิดใช้งาน table ใช้งานนั้นอยู่แล้ว การต้องเรียกเปิดบ่อยๆ ทาให้สมรรถนะการทางาน ไม่ดี • ขนาดของ table cache ควรจะมากพอในการเกิบค่า ตารางที่เปิดใช้งานไว้ได้ • การตั้งค่าไว้ประมาณ 1024 เพียงพอสาหรับระบบที่ มี ประมาณ 200 – 400 ตาราง หรืออาจตั้งเพิ่มได้ กรณีมีตารางจานวนมาก 19
  • 20. query_cache_size • ในระบบที่มีการอ่าน database มากและไม่มีระบบ cache ของโปรแกรม การตั้งค่านี้จะทาให้ระบบ ทางานเร็วขึ้น • การตั้งค่าที่มากเกินไปจะทาให้ระบบทางานช้าลงได้ • การตั้งค่าระหว่าง 32M - 512M เป็นค่าที่เหมาะสม 20
  • 21. สิบตัวแปรที่ต้องติดตามดู 1. Threads_connected – แสดงจานวน client ทั้งหมดที่กาลังติดต่อกับ server – เป็นข้อมูล real-time ทีช่วยในการวิเคราะห์จานวนผู้ใช้ ่ และสามารถตรวจสอบเวลาทีเหมาะสมในการ restart ่ ระบบได้ 21
  • 22. สิบตัวแปรที่ต้องติดตามดู 2. Created_tmp_disk_tables – แสดงจานวน temporary table ทีถูกสร้างขึ้นใน ่ ฮาร์ดดิสก์แทนทีจะเป็นในหน่วยความจา ่ – การใช้งาน table ที่เขียนไว้ในฮาร์ดดิสก์จะช้ากว่า table ในหน่วยความจา ดังนั้นการใช้ query CREATE TEMPORARY TABLE จะช้าโดยเฉพาะอย่างยิ่งหากค่านี้ สูง 22
  • 23. สิบตัวแปรที่ต้องติดตามดู 3. Handler_read_first – แสดงจานวนครั้งที่ตัวจัดการตาราง (table handler) อ่านค่าแถวแรกของ index ในตาราง – การอ่าน แถวแรกของ index นั้นหมายถึงการอ่าน scan index ทั้งตาราง ซึ่งแสดงว่าตาราง index ไว้ไม่ดี 23
  • 24. สิบตัวแปรที่ต้องติดตามดู 4. Innodb_buffer_pool_wait_free – แสดงจานวนครั้งที่ MySQL รอให้มีการ flush หน่วยความจา – ถ้าค่านี้มีค่าสูง อาจจะเกิดจากการตั้งค่า buffer ของ หน่วยความจาไว้ไม่เหมาะสม 24
  • 25. สิบตัวแปรที่ต้องติดตามดู 5. Key_reads – แสดงจานวนครั้งที่ filesystem เรียกใช้ MySQL เพื่ออ่าน index – การที่ filesystem อ่าน index ของฐานข้อมูลจะทาให้ สมรรถนะของ query ไม่ดี การที่คานี้สูงแสดงว่าค่า key ่ cache ไม่เหมาะสม 25
  • 26. สิบตัวแปรที่ต้องติดตามดู 6. Max_used_connections – แสดงจานวนการเชื่อมต่อที่มากที่สุดนับตั้งแต่ MySQL สตาร์ทครั้งล่าสุด – ใช้สาหรับวิเคราะห์การเชื่อมต่อเพื่อให้สามารถปรับปรุง server ให้รองรับการใช้งานได้อย่างเหมาะสม 26
  • 27. สิบตัวแปรที่ต้องติดตามดู 7. Open_tables – แสดจานวน Table ที่เปิดอยู่ ณ ขณะนั้น – หากค่านี้มีค่าต่า ในขณะที่ค่า table_cache สูงจะทาให้ สามารถลด cache ได้ ในทางกลับกันค่านี้สูงแต่ table_cache ต่า ควรเพิ่มค่า cache ได้ 27
  • 28. สิบตัวแปรที่ต้องติดตามดู 8. Select_full_join – แสดงจานวนของ full joins ที่ MySQL ได้ทาผ่านมา – หากค่านี้สูงแสดงว่ามีการเรียกใช้ full table joins ซึ่ง สมรรถนะไม่ดี ควรแก้ไขให้ใช้ index มากขึ้น 28
  • 29. สิบตัวแปรที่ต้องติดตามดู 9. Slow_queries – แสดงจานวน query ทีใช้เวลาในการประมวลผลนาน ่ กว่าปกติ – แสดงว่าการเขียนโปรแกรมเรียก query ไม่ดีจึงสามารถ หาแนวทางในการปรับเปลี่ยน query ได้ 29
  • 30. สิบตัวแปรที่ต้องติดตามดู 10. Uptime – แสดงจานวนวินาทีที่ MySQL สตาร์ทครั้งล่าสุด – หากค่านี้ต่าแสดงว่ามีการ restart MySQL บ่อย ซึ่งเป็น โอกาสในการทางานของระบบทีไม่ดี ่ 30
  • 31. memcached memcached เป็นโปรแกรมที่ มีสมรรถนะสูง ทาหน้าที่ กระจายค่าต่างๆ ไว้ใน หน่วยความจาร่วม ซึ่งจะทาให้ สามารถเรียกใช้ dynamic web เพื่อให้ลดภาระของ database ลงได้ (http://memcached.org/) 31
  • 33. เครื่องมือในการตรวจสอบการทางาน • tuning-primer https://launchpad.net/mysql-tuning-primer • mysqlslap (สาหรับ MySQL 5.1+) # ./mysqlslap --user=root --auto-generate-sql --concurrency=100 --iterations=5 • mysql-stress-test.pl MySQL Stress Test Program 33
  • 34. MySQL Monitoring and Screenshots • MySQL Enterprise Monitoring (Subscription) • Cacti • MONyog • phpMyAdmin 34
  • 36. Download this presentation http://slideshare.net/denpong Contacts email: denpong@kku.ac.th Twitter: @denpong Facebook: denpong 36