当我使用查询提高效率时如下:
select retweet_id from mysqlQ3 where user_id ='99963947’;
当我用Google搜索时,我发现我可以更改以下参数:
query_cache_type=2
query_cache_limit=1M
query_cache_size=32M
但我很好奇当我将query_cache_type从1更改为2时,它甚至会对吞吐量产生不良影响。发生了什么?任何人都可以指定如何提高上述特定查询的mysql性能?
非常感谢你!
答案 0 :(得分:0)
我会使用user_id列的索引,来自手册(https://dev.mysql.com/doc/refman/5.5/en/mysql-indexes.html):
MySQL使用索引进行这些操作:
- 快速查找与WHERE子句匹配的行。
答案 1 :(得分:0)
但我很好奇当我将query_cache_type从1更改为2时,它甚至会对吞吐量产生不良影响。发生了什么事?
我认为您的答案实际上是在MySQL文档中: https://dev.mysql.com/doc/refman/5.0/en/query-cache-configuration.html
因此,值2对缓存的内容比值1更具限制性,并且只有在调用者明确请求时才会触及缓存,否则将不会缓存。
答案 2 :(得分:0)
你有id
的INDEX吗?可能你有PRIMARY KEY(id)
,这甚至更好。在这种情况下,不要打扰查询缓存。
你对该表有很多写吗?每次发生写入时, 表的QC中的所有条目都将被清除。这意味着扫描32M以查找该表的任何条目。扫描成本很高,而且您在QC中没有任何类似的查询。
返回被编入索引的id
...对于MyISAM表,key_buffer_size
应调整为可用内存的20%。对于InnoDB表,innodb_buffer_pool_size
应该是可用RAM的70%左右。这些是引擎特定的缓存;它们不会被写入清除,因此它们对于像上面提到的点查询更可靠。
几乎所有"生产"我已经处理过的服务器,QC已经或应该被关闭。