Very slow query on MariaDB 10.3 compared to MySQL 5.5.50
2
votes
1
answer
2182
views
I already discussed how much slower performance I have experienced on MariaDB 10.3 compared to MySQL 5.5 for some queries in my previously posted thread , but I am now struggling with a specific kind of queries that give me an extremely slow result I can't figure out, even if indexes are added to all involved columns.
The query I am experimenting with right now is the following:
select distinct a.asset_id, a.*
from HLAsset a,
HLAssetCategory c
where a.asset_id=c.asset_id
and a.filetype='SCORCH'
and a.date_deleted=''
and a.excluded=0;
It requests distinct IDs from two pretty big tables. The first table HLAsset includes around 303,000 rows with 31 columns each. The second table HLAssetCategory includes around 627,000 rows with just 2 columns each.
On the old server with MySQL 5.5.50 the query takes around 8 seconds to complete. On the new MariaDB 10.3 it takes well over 22 seconds (!!!), and I can't figure out why.
If anyone of you could help me to understand why such a huge difference in performance, please, let me know. Keep in mind that the new MariaDB is on a much newer and faster server, which makes the whole issue even weirder.
Here is some info for you:
Explain of the query on the old server with MySQL 5.5.50:
mysql> explain select distinct a.asset_id, a.* from HLAsset a, HLAssetCategory c where a.asset_id=c.asset_id and a.filetype='SCORCH' and a.date_deleted='' and a.excluded=0;
+----+-------------+-------+------+----------------------------------------+---------+---------+------------------------------+--------+------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+------+----------------------------------------+---------+---------+------------------------------+--------+------------------------------+
| 1 | SIMPLE | a | ALL | PRIMARY,date_deleted,excluded,filetype | NULL | NULL | NULL | 303211 | Using where; Using temporary |
| 1 | SIMPLE | c | ref | PRIMARY | PRIMARY | 34 | mydb.a.asset_id | 2 | Using index; Distinct |
+----+-------------+-------+------+----------------------------------------+---------+---------+------------------------------+--------+------------------------------+
2 rows in set (0.00 sec)
Explain of the query on the new server with MariaDB 10.3:
MariaDB [virtualsheetmusic]> explain select distinct a.asset_id, a.* from HLAsset a, HLAssetCategory c where a.asset_id=c.asset_id and a.filetype='SCORCH' and a.date_deleted='' and a.excluded=0;
+------+-------------+-------+------+----------------------------------------+---------+---------+------------------------------+--------+------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+------+-------------+-------+------+----------------------------------------+---------+---------+------------------------------+--------+------------------------------+
| 1 | SIMPLE | a | ALL | PRIMARY,date_deleted,excluded,filetype | NULL | NULL | NULL | 303366 | Using where; Using temporary |
| 1 | SIMPLE | c | ref | PRIMARY | PRIMARY | 34 | mydb.a.asset_id | 2 | Using index; Distinct |
+------+-------------+-------+------+----------------------------------------+---------+---------+------------------------------+--------+------------------------------+
2 rows in set (0.003 sec)
And here is a SHOW CREATE TABLE of the first table HLAsset on the old server with MySQL 5.5.50:
mysql> show create table HLAsset;
+---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| HLAsset | CREATE TABLE HLAsset
(
asset_id
varchar(32) NOT NULL,
asset_type
varchar(64) DEFAULT NULL,
format
varchar(64) DEFAULT NULL,
asset_title
varchar(255) DEFAULT NULL,
description
text,
date_added
varchar(32) DEFAULT NULL,
date_deleted
varchar(32) DEFAULT NULL,
page_count
int(11) DEFAULT NULL,
retail_price
decimal(9,2) DEFAULT NULL,
filename
varchar(255) DEFAULT NULL,
filetype
varchar(64) DEFAULT NULL,
filesource
varchar(32) DEFAULT NULL,
mime_type
varchar(64) DEFAULT NULL,
fileurl
varchar(256) DEFAULT NULL,
world_rights
enum('true','false') DEFAULT NULL,
song_number
int(11) DEFAULT NULL,
public_domain
enum('true','false') DEFAULT NULL,
package_type
varchar(32) DEFAULT NULL,
asset_action
varchar(32) DEFAULT NULL,
asset_voicing
varchar(256) DEFAULT NULL,
performance_time
varchar(256) DEFAULT NULL,
external_ref
varchar(30) DEFAULT NULL,
difficulty_level_low
decimal(9,2) DEFAULT NULL,
difficulty_level_high
decimal(9,2) DEFAULT NULL,
tempo
int(11) NOT NULL DEFAULT '0',
minimum_quantity
int(11) NOT NULL DEFAULT '0',
image_url
varchar(256) DEFAULT NULL,
renderingPDF
tinyint(4) NOT NULL,
renderingXML
tinyint(4) NOT NULL,
extra_score
tinyint(4) NOT NULL,
excluded
tinyint(4) NOT NULL,
PRIMARY KEY (asset_id
),
KEY asset_type
(asset_type
),
KEY date_deleted
(date_deleted
),
KEY world_rights
(world_rights
),
KEY format
(format
),
KEY page_count
(page_count
),
KEY renderingXML
(renderingXML
),
KEY date_added
(date_added
),
KEY tempo
(tempo
),
KEY asset_title
(asset_title
),
KEY excluded
(excluded
),
KEY extra_score
(extra_score
),
KEY filetype
(filetype
)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 |
+---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
And here is a SHOW CREATE TABLE of the second table HLAssetCategory on the old server with MySQL 5.5.50:
mysql> show create table HLAssetCategory;
+-----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| HLAssetCategory | CREATE TABLE HLAssetCategory
(
asset_id
varchar(32) NOT NULL,
category_id
int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (asset_id
,category_id
),
KEY category_id
(category_id
)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 |
+-----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
And here is a SHOW CREATE TABLE of the first table HLAsset on the new server with MariaDB 10.3:
MariaDB [virtualsheetmusic]> show create table HLAsset;
+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| HLAsset | CREATE TABLE HLAsset
(
asset_id
varchar(32) NOT NULL,
asset_type
varchar(64) DEFAULT NULL,
format
varchar(64) DEFAULT NULL,
asset_title
varchar(255) DEFAULT NULL,
description
text DEFAULT NULL,
date_added
varchar(32) DEFAULT NULL,
date_deleted
varchar(32) DEFAULT NULL,
page_count
int(11) DEFAULT NULL,
retail_price
decimal(9,2) DEFAULT NULL,
filename
varchar(255) DEFAULT NULL,
filetype
varchar(64) DEFAULT NULL,
filesource
varchar(32) DEFAULT NULL,
mime_type
varchar(64) DEFAULT NULL,
fileurl
varchar(256) DEFAULT NULL,
world_rights
enum('true','false') DEFAULT NULL,
song_number
int(11) DEFAULT NULL,
public_domain
enum('true','false') DEFAULT NULL,
package_type
varchar(32) DEFAULT NULL,
asset_action
varchar(32) DEFAULT NULL,
asset_voicing
varchar(256) DEFAULT NULL,
performance_time
varchar(256) DEFAULT NULL,
external_ref
varchar(30) DEFAULT NULL,
difficulty_level_low
decimal(9,2) DEFAULT NULL,
difficulty_level_high
decimal(9,2) DEFAULT NULL,
tempo
int(11) NOT NULL DEFAULT 0,
minimum_quantity
int(11) NOT NULL DEFAULT 0,
image_url
varchar(256) DEFAULT NULL,
renderingPDF
tinyint(4) NOT NULL,
renderingXML
tinyint(4) NOT NULL,
extra_score
tinyint(4) NOT NULL,
excluded
tinyint(4) NOT NULL,
PRIMARY KEY (asset_id
),
KEY asset_type
(asset_type
),
KEY date_deleted
(date_deleted
),
KEY world_rights
(world_rights
),
KEY format
(format
),
KEY page_count
(page_count
),
KEY renderingXML
(renderingXML
),
KEY date_added
(date_added
),
KEY tempo
(tempo
),
KEY asset_title
(asset_title
),
KEY excluded
(excluded
),
KEY extra_score
(extra_score
),
KEY filetype
(filetype
)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 |
+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.001 sec)
And here is a SHOW CREATE TABLE of the second table HLAssetCategory on the new server with MariaDB 10.3:
MariaDB [virtualsheetmusic]> show create table HLAssetCategory;
+-----------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-----------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| HLAssetCategory | CREATE TABLE HLAssetCategory
(
asset_id
varchar(32) NOT NULL,
category_id
int(11) NOT NULL DEFAULT 0,
PRIMARY KEY (asset_id
,category_id
),
KEY category_id
(category_id
)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 |
+-----------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.000 sec)
And finally, here is the my.cnf on the old server with MySQL 5.5.50 (I have removed the comments):
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
bind-address = 0.0.0.0
key_buffer = 16M
thread_stack = 192K
thread_cache_size = 8
myisam-recover = BACKUP
query_cache_limit = 1M
query_cache_size = 16M
expire_logs_days = 10
max_binlog_size = 100M
symbolic-links=0
max_allowed_packet=1000M
net_buffer_length=100M
read_buffer_size=16M
max_connections=300
query-cache-type=1
query-cache-size=20M
myisam_recover_options=OFF
thread_stack=262144
innodb_buffer_pool_size=1GB
innodb_io_capacity = 2000
innodb_read_io_threads = 64
innodb_thread_concurrency = 0
innodb_write_io_threads = 64
innodb_buffer_pool_instances = 8
innodb_flush_log_at_trx_commit = 2
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
[mysql]
[isamchk]
key_buffer = 16M
And here is the same file on the new server with MariaDB 10.3:
[server]
character-set-server = latin1
collation-server = latin1_swedish_c
[mysqld]
open_files_limit = 65535
user = mysql
pid-file = /run/mysqld/mysqld.pid
socket = /run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
sql_mode = 'NO_ENGINE_SUBSTITUTION'
bind-address = 0.0.0.0
key_buffer_size = 20M
thread_stack = 192K
thread_cache_size = 200
myisam_recover_options = BACKUP
query_cache_limit = 1M
tmp_table_size = 64M
max_heap_table_size = 64M
log_error = /var/log/mysql/error.log
slow_query_log
slow_query_log_file = /var/log/mysql/mariadb-slow.log
long_query_time = 10
log_slow_rate_limit = 1000
log_queries_not_using_indexes=ON
expire_logs_days = 10
max_binlog_size = 100M
character-set-server = latin1
collation-server = latin1_swedish_ci
symbolic-links=0
max_allowed_packet=160M
net_buffer_length=100M
read_buffer_size=16M
max_connections=300
query_cache_type=1
query_cache_size=20M
myisam_recover_options=OFF
thread_stack=262144
innodb_buffer_pool_size=10GB
innodb_read_io_threads = 64
innodb_thread_concurrency = 0
innodb_write_io_threads = 64
innodb_buffer_pool_instances = 8
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 64M
innodb_thread_sleep_delay = 0
innodb_file_per_table = 1
skip-name-resolve
innodb_strict_mode = 0
innodb_lru_scan_depth=100
innodb_change_buffer_max_size = 50
read_buffer_size = 256K
innodb_io_capacity = 3900
innodb_flush_neighbors = 0
[embedded]
[mariadb]
[mariadb-10.3]
Eager to know your thoughts about all this.
Thank you in advance to everyone again!
All the best, Fab.
Asked by Fabrizio Ferrari
(153 rep)
Dec 3, 2020, 06:07 PM
Last activity: May 31, 2025, 02:04 AM
Last activity: May 31, 2025, 02:04 AM