Sample Header Ad - 728x90

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