mariaDB 10.1简单SELECT多秒大型数据库

时间:2017-05-07 22:52:35

标签: php mysql select mariadb

我做了一个简单的SELECT(尝试使用和不使用LIMIT 1)...

SELECT * FROM `links_db` WHERE `link` LIKE '__some_url__'  ; // 9.45 sec
SELECT * FROM `links_db` WHERE `link` LIKE '__some_url__' LIMIT 1 ; // 8 sec
SELECT `link` FROM `links_db` WHERE `link` LIKE '__some_url__' ; // 5 sec
SELECT `link` FROM `links_db` WHERE `link` LIKE '__some_url__' LIMIT 1 ; // 5 sec

但问题是我的数据库是300 MB ...执行这个单一且简单的任务需要5秒......

我从MYSQL 5.5升级到MariaDB 10.1但仍然是5秒......

my.cnf中是否有设置可以帮助提高SELECT的速度?

2 个答案:

答案 0 :(得分:0)

我认为my.cnf中有问题...

我删除了所有行(让mariaDB拥有它自己的默认值)除了这几行:

[mysqld]
performance-schema=1
tmpdir=/home/tmp
general_log=0
slow_query_log=0
innodb_file_per_table=1
default-storage-engine=InnoDB
innodb_buffer_pool_size=2000M

并且SELECT从9秒传递到140毫秒;)

答案 1 :(得分:0)

(很多评论。)

70K行<300> 300MB?你有一些广泛的专栏吗?

link是否已编入索引?

让我们看看SHOW CREATE TABLE

您删除了哪些设置?如果你盲目地将很多东西设置为大值,那可能会导致性能问题 - 通常是通过吹出RAM。

你有多少内存?

如果您在link上没有索引,则所有这些查询都将以相同的方式执行(请参阅EXPLAIN)。该表将进行扫描,检查每个LIKE。如果表格中的这一行早期,那么LIMIT 1将很快停止。 (所以我假设没有这样的。)使用SELECT *,收集所有列;这需要更多的努力。

请勿将query_cache_size设置为大于50M。