ขอบอกเบื้องต้นครับ (บนฐานที่ว่าเครื่องไม่ได้อยู่ที่ไทย ทั้งด้าน OS Hardware ไม่สามารถแตะต้องได้ครับ)
ทำได้แค่เพียง tuning sql และ structure ให้สามารถ select ข้อมูลได้เร็วขึ้นเท่านั้น
select count(*) from events ใช้เวลา 16.06 sec
ผลลัพท์ 18,629,084 rows
select count(*) from events where billing_period=201203 ใช้เวลา 0.69 sec
ผลลัพท์ 254,150 rows
ผมบังคับใช้ index ตรงๆ เลย จริงๆ column นี้ create index อยู่แล้ว
select * from events use index(billing_period) where billing_period=201203 ใช้เวลา 945.62 sec หรือ 15 นาที ได้แค่ 92,000 rows ดังนั้น ถ้ารอก็คงประมาณ 30 นาที
คำถามทำไม 2 แสน กว่าๆ ถึงใช้เวลานานขนาดนั้น ทั้งๆ ที่ยังไม่ได้ join อะไรกันเลยครับ ผมจะปรับอะไรได้บ้างครับ
mysql select ข้อมูลช้ามากครับ
Moderator: mindphp
- mindphp
- ผู้ดูแลระบบ MindPHP
- โพสต์: 41356
- ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
- ติดต่อ:
Re: mysql select ข้อมูลช้ามากครับ
มีตัวอย่าง ไฟล์ config mysql ไหมครับ
ขอดู รายละเอียด space server ด้วยครับ
ขอดู รายละเอียด space server ด้วยครับ
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
Re: mysql select ข้อมูลช้ามากครับ
[mysql@mw-db02 ~]$ df -hmindphp เขียน:มีตัวอย่าง ไฟล์ config mysql ไหมครับ
ขอดู รายละเอียด space server ด้วยครับ
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_db03-lv_root
1.8T 456G 1.3T 27% /
tmpfs 4.0G 0 4.0G 0% /dev/shm
/dev/sda1 194M 40M 145M 22% /boot
top - 11:36:50 up 1069 days, 9:39, 2 users, load average: 0.24, 0.29, 0.27
Tasks: 116 total, 2 running, 114 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.5%us, 0.0%sy, 0.0%ni, 99.5%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 8193552k total, 8102112k used, 91440k free, 132644k buffers
Swap: 10305528k total, 404192k used, 9901336k free, 4811616k cached
#
# Port and the socket
#
port = 3306
#
socket = /tmp/mysqld.sock
#
#password = my_password
#
#----------------------------------------------------------------
#
[safe_mysqld]
#
# Log file
#
err-log = /database/logs/mysql.err
#
#----------------------------------------------------------------
#
[mysqld]
skip_name_resolve
#
# Server ID must be unique to allow for replication
# Our servers are named: 1 - master -or- 2 - slave
# then the server number so mw-db02 (master) would
# be 1002, while slave mw-db03 would be 2003
#
server-id = 1002
auto-increment-increment = 4
auto-increment-offset = 2
#innodb_flush_log_at_trx_commit = 1
innodb_flush_log_at_trx_commit = 2
#sync_binlog = 1
sync_binlog = 0
socket = /tmp/mysqld.sock
max-connections = 300
max-allowed-packet=8M
basedir = /database/mysql
datadir = /database/data
tmpdir = /database/tmp
log-error = /database/logs/mysqld.err
pid-file = /var/run/mysqld/mysqld.pid
#log-bin=mysqld-bin
#binlog-format = row
slave_exec_mode=IDEMPOTENT
# The number of days to keep binary logs before they are automatically purged
expire_logs_days=30
relay-log=mysqld-relay-bin
#
skip-slave-start
#read-only
#
innodb-data-home-dir = /database/data
innodb-data-file-path = ibdata1:10M:autoextend
innodb-file-per-table
innodb-log-file-size = 128M # 4GB RAM
# Buffer pool size
innodb-buffer-pool-size = 2G # 4GB RAM
innodb-log-group-home-dir = /database/logs/innodb
# Character set and collation
character-set-server=utf8
#----------------------------------------------------------------
open_files_limit=4000
table_definition_cache=3000
table_open_cache=3000
query_cache_size=102400
log-queries-not-using-indexes=1
-
- PHP Newbie
- โพสต์: 1
- ลงทะเบียนเมื่อ: 14/09/2014 6:48 pm
Re: mysql select ข้อมูลช้ามากครับ
[mysql@mw-db02 ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_db03-lv_root
1.8T 456G 1.3T 27% /
tmpfs 4.0G 0 4.0G 0% /dev/shm
/dev/sda1 194M 40M 145M 22% /boot
[mysql@mw-db02 ~]$ top
top - 11:37:17 up 1069 days, 9:40, 2 users, load average: 0.28, 0.29, 0.27
Tasks: 116 total, 1 running, 115 sleeping, 0 stopped, 0 zombie
Cpu(s): 4.6%us, 0.2%sy, 0.0%ni, 92.7%id, 2.5%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 8193552k total, 8102228k used, 91324k free, 132652k buffers
Swap: 10305528k total, 404192k used, 9901336k free, 4811688k cached
[client]
#
# These options apply to all client applications
#
#
# Port and the socket
#
port = 3306
#
socket = /tmp/mysqld.sock
#
#password = my_password
#
#----------------------------------------------------------------
#
[safe_mysqld]
#
# Log file
#
err-log = /database/logs/mysql.err
#
#----------------------------------------------------------------
#
[mysqld]
skip_name_resolve
#
# Server ID must be unique to allow for replication
# Our servers are named: 1 - master -or- 2 - slave
# then the server number so mw-db02 (master) would
# be 1002, while slave mw-db03 would be 2003
#
server-id = 1002
auto-increment-increment = 4
auto-increment-offset = 2
#innodb_flush_log_at_trx_commit = 1
innodb_flush_log_at_trx_commit = 2
#sync_binlog = 1
sync_binlog = 0
socket = /tmp/mysqld.sock
max-connections = 300
max-allowed-packet=8M
basedir = /database/mysql
datadir = /database/data
tmpdir = /database/tmp
log-error = /database/logs/mysqld.err
pid-file = /var/run/mysqld/mysqld.pid
#log-bin=mysqld-bin
#binlog-format = row
slave_exec_mode=IDEMPOTENT
# The number of days to keep binary logs before they are automatically purged
expire_logs_days=30
relay-log=mysqld-relay-bin
#
skip-slave-start
#read-only
#
innodb-data-home-dir = /database/data
innodb-data-file-path = ibdata1:10M:autoextend
innodb-file-per-table
innodb-log-file-size = 128M # 4GB RAM
# Buffer pool size
innodb-buffer-pool-size = 2G # 4GB RAM
innodb-log-group-home-dir = /database/logs/innodb
# Character set and collation
character-set-server=utf8
#----------------------------------------------------------------
open_files_limit=4000
table_definition_cache=3000
table_open_cache=3000
query_cache_size=102400
log-queries-not-using-indexes=1
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_db03-lv_root
1.8T 456G 1.3T 27% /
tmpfs 4.0G 0 4.0G 0% /dev/shm
/dev/sda1 194M 40M 145M 22% /boot
[mysql@mw-db02 ~]$ top
top - 11:37:17 up 1069 days, 9:40, 2 users, load average: 0.28, 0.29, 0.27
Tasks: 116 total, 1 running, 115 sleeping, 0 stopped, 0 zombie
Cpu(s): 4.6%us, 0.2%sy, 0.0%ni, 92.7%id, 2.5%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 8193552k total, 8102228k used, 91324k free, 132652k buffers
Swap: 10305528k total, 404192k used, 9901336k free, 4811688k cached
[client]
#
# These options apply to all client applications
#
#
# Port and the socket
#
port = 3306
#
socket = /tmp/mysqld.sock
#
#password = my_password
#
#----------------------------------------------------------------
#
[safe_mysqld]
#
# Log file
#
err-log = /database/logs/mysql.err
#
#----------------------------------------------------------------
#
[mysqld]
skip_name_resolve
#
# Server ID must be unique to allow for replication
# Our servers are named: 1 - master -or- 2 - slave
# then the server number so mw-db02 (master) would
# be 1002, while slave mw-db03 would be 2003
#
server-id = 1002
auto-increment-increment = 4
auto-increment-offset = 2
#innodb_flush_log_at_trx_commit = 1
innodb_flush_log_at_trx_commit = 2
#sync_binlog = 1
sync_binlog = 0
socket = /tmp/mysqld.sock
max-connections = 300
max-allowed-packet=8M
basedir = /database/mysql
datadir = /database/data
tmpdir = /database/tmp
log-error = /database/logs/mysqld.err
pid-file = /var/run/mysqld/mysqld.pid
#log-bin=mysqld-bin
#binlog-format = row
slave_exec_mode=IDEMPOTENT
# The number of days to keep binary logs before they are automatically purged
expire_logs_days=30
relay-log=mysqld-relay-bin
#
skip-slave-start
#read-only
#
innodb-data-home-dir = /database/data
innodb-data-file-path = ibdata1:10M:autoextend
innodb-file-per-table
innodb-log-file-size = 128M # 4GB RAM
# Buffer pool size
innodb-buffer-pool-size = 2G # 4GB RAM
innodb-log-group-home-dir = /database/logs/innodb
# Character set and collation
character-set-server=utf8
#----------------------------------------------------------------
open_files_limit=4000
table_definition_cache=3000
table_open_cache=3000
query_cache_size=102400
log-queries-not-using-indexes=1
- mindphp
- ผู้ดูแลระบบ MindPHP
- โพสต์: 41356
- ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
- ติดต่อ:
Re: mysql select ข้อมูลช้ามากครับ
เลือก เปิด slow query log เพื่อเช็คว่า มันทำงานช้าที่ Query อันไหน แล้วแก้วิเคราะห์ ว่ามาจากสาเหตุไหน เพื่อ หาทางตั้งค่าใหม่
หรือใช้ mysql turner ดูค่าเบื้องต้นก่อนก็ได้ครับ
หรือใช้ mysql turner ดูค่าเบื้องต้นก่อนก็ได้ครับ
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
-
- Similar Topics
- ตอบกลับ
- แสดง
- โพสต์ล่าสุด
-
-
โพสต์ใหม่ ใครมีเทคนิคการเพิ่มความเร็วในการ select ข้อมูลจาก MySQL ยังไงแชร์กันหน่อยคับ
โดย M027 » 02/09/2015 6:32 pm » ใน SQL - Database - 5 ตอบกลับ
- 2799 แสดง
-
โพสต์ล่าสุด โดย M027
04/09/2015 11:30 am
-
-
-
โพสต์ใหม่ Mysql แยกเก็บ วีน เดือน ปี เกิด ไว้คนละฟิล เราจะ select เอาคนเกษียณอายุแต่ละปียังไงครับ
โดย Somkid Plingkratok » 08/08/2018 9:11 pm » ใน SQL - Database - 2 ตอบกลับ
- 3257 แสดง
-
โพสต์ล่าสุด โดย Somkid Plingkratok
08/08/2018 9:27 pm
-
-
-
โพสต์ใหม่ อัพเกรด Mysql Ubuntu จาก MySQL 5.5 เป็น MySQL 5.7
โดย mindphp » 12/06/2016 5:57 pm » ใน Linux - Web Server - 1 ตอบกลับ
- 3342 แสดง
-
โพสต์ล่าสุด โดย mindphp
12/06/2016 5:58 pm
-
-
-
โพสต์ใหม่ วิธีแสดงคำสั่ง ที่กำลังทำงานอยู่ของ MySQL / MariaDB ด้วยคำสั่ง show process command mysql
โดย mindphp » 29/06/2021 5:53 am » ใน SQL Knowledge - 0 ตอบกลับ
- 3652 แสดง
-
โพสต์ล่าสุด โดย mindphp
29/06/2021 5:53 am
-
-
-
โพสต์ใหม่ วิธีการหา Error ของการ Insert ข้อมูลลงฐานข้อมูล Mysql โดยใช้ Mysql
โดย Patipat » 17/06/2019 5:42 pm » ใน SQL Knowledge - 0 ตอบกลับ
- 6370 แสดง
-
โพสต์ล่าสุด โดย Patipat
17/06/2019 5:42 pm
-
-
-
โพสต์ใหม่ ปัญหา MySQL unknown column 'password_last_changed' หลังการอัพเกรด MySQL เป็นเวอร์ชั่น 5.7
โดย mindphp » 13/06/2016 5:42 pm » ใน SQL - Database - 1 ตอบกลับ
- 2424 แสดง
-
โพสต์ล่าสุด โดย mindphp
13/06/2016 5:44 pm
-
-
- 1 ตอบกลับ
- 2912 แสดง
-
โพสต์ล่าสุด โดย mindphp
23/07/2017 3:20 am
ผู้ใช้งานขณะนี้
สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 60