我做了一个简单的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的速度?
答案 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。