*** จูน Mysql ให้ทำงานเร็วขึ้น *** cpu 4 core
เพื่อความรวดเร็วในการนำค่าไปใช้ ผมรวบรวมให้แล้วครับ ตามนี้
max_connections=1000
innodb_file_per_table
innodb_thread_concurrency = 0
innodb_flush_log_at_trx_commit = 2
innodb_lock_wait_timeout = 50
innodb_flush_method=O_DIRECT
innodb_doublewrite=0
innodb_support_xa = 0
innodb_open_files = 2000
innodb_locks_unsafe_for_binlog=1
innodb_support_xa = 0
innodb_locks_unsafe_for_binlog = 1
อีก 2 ตัวที่ไม่ค่อยมีคนสนใจแต่ทำให้ MySQL ทำงานเร็วขึ้นครับ
ตัว1
innodb_flush_log_at_trx_commit=2
จะทำให้ MySQL เขียน Log ทุก 1 วินาที แทนที่จะทุก Transaction
ตัว2
max_heap_table_size = 128M
ช่วยให้บาง Query ทำงานได้เร็วขึ้นครับ
อีกตัวครับ
innodb_flush_method=O_DIRECT
จะปิดการทำงานของระบบ double buffering ของ MySQL ครับ (ทำให้ระบบโดยรวมเร็วขึ้น)
ตามด้วย
innodb_doublewrite=0
จะทำให้ innodb เขียนข้อมูลใน table space แค่ครั้งเดียว แทนที่จะเขียนสองครั้ง
***ถ้าเข้าจากเครื่องอื่นแล้วช้าอาจจะเกี่ยวกับการ resolve ชื่อและไอพี ให้ลองเพิ่ม skip-name-resolve ที่หัวข้อ[mysqld]
ปัญหามาซักพักกับการที่ MariaDB ดับไปเองบ้าง รีสตาร์ทบ่อยๆ บ้าง ปรับแก้ my.cnf ก็ไม่นิ่งซะทีจนไปเจอ Code แล้วเอามาปรับแก้ max_connections อีกทีจนนิ่งสนิท ตัวนี้จะเป็น
เมื่อใช้ไป1อาทิตย์ลองตรวจสอบ
**************************************************************************
มา config my.cnf กันเหอะ
[client]
#password = [your_password]
port = 3306
socket = /var/lib/mysql/mysql.sock
default-character-set = tis620
[mysqld]
default-character-set=tis620 ###ทำให้ใช้งานภาษาไทยได้ ต้องเซ็ทตรงนี้ให้เสร็จก่อนที่จะ import ข้อมูลภาษาไทยเข้าไป
skip-charecter-set-client-handshark = ใช้เซ็ตภาษาให้กับโปรแกรมอื่น ช่น access
key_buffer=128M ###ควรเซ็ทเป็น 40% ของ ram ที่มี
table_cache=256 ###ให้เท่ากับตารางทั้งหมดที่มีใน DB
sort_buffer_size=1M ###เป็นหน่วยความจำที่จองไว้ต่อจำนวน connection
read_buffer_size=1M ###เป็นหน่วยความจำที่จองไว้ต่อจำนวน connection
read_rnd_buffer_size=1M ###เป็นหน่วยความจำที่จองไว้ต่อจำนวน connection
myisam_sort_buffer_size=32M ###ในการที่เรา create index จะใช้หน่วยความจำส่วนนี้ ควรเซ็ทไว้ 10-20%
max_allowed_packet=32M ###เป็นตัวกำหนดค่าการส่งข้อมูลใน 1 statement เช่น คำสั่ง insert ที่มีรูปมาด้วย หากคำสั่งนั้นมีขนาดใหญ่กว่าจำนวนที่กำหนดไว้ จะ error แนะนำให้กำหนดไว้ 128M
query_cache_size=128M ### ควรเซ็ทไว้ที่ 10%
#interaction_timeout=300
#wait_timeout=180 ### เช่นกรณีที่รายงานนั้นใช้เวลาในการดึงรายงานออกมานานเกินเวลาที่กำหนดไว้จะทำงานตัด connection นั้นทิ้งไป
innodb_data_file_path=ibdata1:100M:autoextend ###กำหนดขนาดเริ่มต้นของ logfile
innodb_flush_log_at_trx_commit=1 ###ตัวกำหนดพฤติกรรมในการ commit ข้อมูล ถ้ามีค่าเป็น 1 คือมีการบันทึกข้อมูลลง HD ทันที ถ้าเป็น 0 จะบันทึกข้อมูลทุก 1 วินาที ถ้าไฟดับ ข้อมูลจะหายไป 1 วินาที
innodb_buffer_pool_size=64M ###อันนี้สำคัญ เป็นหน่วยความจำที่แชร์ ยิ่งเยอะยิ่งดีแต่ไม่ควรเกิน 40-60% ของหน่วยความจำที่มี
innodb_additional_mem_pool_size=8M
innodb_log_file_size=16M ### ถ้า mysql start แล้วตรงนี้ห้ามแก้ ถ้าจะแก้ต้องแก้ก่อนเริ่มใช้งาน เพราะถ้า ลบไฟล์ทิ้งข้อมูลแบบ innodbจะไม่สมบูรณ์
innodb_log_buffer_size=4M ###ระบบ Set ให้เอง
innodb_lock_wait_timeout=50
max_connections=1000 ###อันนี้สำคัญ จำนวนเครื่องที่จะ connect เข้ามาที่ mysql ได้
innodb_file_per_table ###อันนี้สำคัญ เนื่องจาก innodb เก็บทุกตารางไว้ในไฟล์เดียวกันหมด ถ้ามีคำสั่งบรรทัดนี้ จะเป็นการสั่งให้การเก็บข้อมูลเป็นแบบ 1 ตาราง เป็น 1 file
skip-character-set-client-handshake ###ผู้ใช้สามารถใช้โปรแกรมอื่นมาดึงข้อมูลจาก mysql ได้ เช่น Access
skip-locking
skip-name-resolve ###ถ้าไม่เปิดอันนี้ mysql จะเสียเวลาแปลง ip ให้เป็น ชื่อเครื่อง
big-tables ###เปิดไว้สำหรับ myisam ให้เก็บข้อมูลได้ในระดับ tera
[mysql]
default-character-set=tis620
[mysqldump]
default-character-set=tis620
max_allowed_packet=16M
allow-keywords
join_buffer_size = 2M
concurrent_insert = 2
max_heap_table_size = 512M
qkey_buffer_size = 128M
max_allowed_packet = 1G
thread_cache_size = 8
max_connections = 100
query_cache_type= 1
query_cache_size=64M #32M
join_buffer_size = 128M
read_buffer_size = 128M
read_rnd_buffer_size = 128M
thread_cache_size = 128M
เราสามารถทำการเปิดการใช้ cache ได้โดยการแก้ไขค่าในไฟล์ ⁄etc⁄my.cnf
แต่ก่อนอื่นต้องเช็คดูก่อนว่า server ของเรามีไฟล์ ⁄etc⁄my.cnf อยู่หรือยัง ถ้
ายังให้ช้คำสั่งนี้เพื่อหาตัวอย่างไฟล์ my.cnf ในเครื่องของเรา#find ⁄ -name *.cnf
จะใช้ไฟล์ไหนขึ้นอยู่กับ Ram ของเรา รายละเอียดดูในแต่ละไฟล์ได้เลย
จากนั้น copy file นั้นไปเป็น my.cnf โดยคำสั่ง
#cp (file) ⁄etc⁄my.cnf
จากนั้นทำการแก้ไข ⁄etc⁄my.cnf โดยเพิ่มบรรทัดนี้เข้าไป
query_cache_type= 1
แล้วอาจจะทำการ เพิ่มขนาดของ cache โดยแก้
query_cache_size= 64M
ในตัวอย่างเพิ่ม cache เป็น 64M
จากนั้น restart mysql ด้วยคำสั่ง สำหรับ Ubuntu18.04 mariadb10
sudo service mysql restart
ไม่มีความคิดเห็น:
แสดงความคิดเห็น