mysql查询间歇返回空结果

时间:2019-06-27 18:05:22

标签: mysql

我有以下查询,有时在主数据库上返回一个空集,但在只读副本上从不返回,并且两个数据库上都存在匹配的数据。它是随机的,想知道是否存在mysql设置或带有查询缓存的内容。在rds上运行mysql 5.6.40-log。

我尝试做optimizer_switch="index_merge_intersection=off",但没有用。

UPDATEoptimizer_switch =“ index_merge_intersection = off”似乎有效,但是在进行此更改后我清除了查询缓存,问题似乎已经解决。 发生的一个真正奇怪的问题是,查询在100%的时间内通过mysql命令行运行;但是直到我清除了查询缓存(即使它以同一用户身份连接),Web应用程序也无法正常工作。

一旦我对表phppos_items进行了优化,它将对其进行修复(三分钟),然后又恢复为不稳定状态(大多数为空集)。这些都是innodb表。

设置:

https://gist.github.com/blasto333/82b18ef979438b93e4c39624bbf489d7

似乎在一天的繁忙时间更频繁地返回空集。服务器为rds m4.large,具有500个数据库和每个数据库100个表

查询:

SELECT SUM( phppos_sales_items.damaged_qty ) AS damaged_qty, 
        SUM( phppos_sales_items.subtotal ) AS subtotal, 
        SUM( phppos_sales_items.total ) AS total, 
        SUM( phppos_sales_items.tax ) AS tax, 
        SUM( phppos_sales_items.profit ) AS profit
FROM  `phppos_sales` 
    JOIN  `phppos_sales_items` ON  `phppos_sales_items`.`sale_id` =  `phppos_sales`.`sale_id` 
    JOIN  `phppos_items` ON  `phppos_sales_items`.`item_id` =  `phppos_items`.`item_id` 
WHERE  `phppos_sales`.`deleted` =0
AND  `sale_time` BETWEEN  '2019-01-01 00:00:00' AND  '2019-12-31 23:59:59'
AND  `phppos_sales`.`location_id` IN ( 1 ) 
AND  `phppos_sales`.`store_account_payment` =0
AND  `suspended` <2
AND  `phppos_items`.`deleted` =0
AND  `phppos_items`.`supplier_id` = '485'
GROUP BY  `phppos_sales_items`.`sale_id` 

说明:

+----+-------------+--------------------+-------------+-----------------------------------------------------------------------------------------------+-----------------------------+---------+-------------------------------------------------------+------+---------------------------------------------------------------------------------------------------------+
| id | select_type | table              | type        | possible_keys                                                                                 | key                         | key_len | ref                                                   | rows | Extra                                                                                                   |
+----+-------------+--------------------+-------------+-----------------------------------------------------------------------------------------------+-----------------------------+---------+-------------------------------------------------------+------+---------------------------------------------------------------------------------------------------------+
|  1 | SIMPLE      | phppos_items       | index_merge | PRIMARY,phppos_items_ibfk_1,deleted,deleted_system_item                                       | phppos_items_ibfk_1,deleted | 5,4     | NULL                                                  |   44 | Using intersect(phppos_items_ibfk_1,deleted); Using where; Using index; Using temporary; Using filesort |
|  1 | SIMPLE      | phppos_sales_items | ref         | PRIMARY,item_id,phppos_sales_items_ibfk_3,phppos_sales_items_ibfk_4,phppos_sales_items_ibfk_5 | item_id                     | 4       | phppoint_customer.phppos_items.item_id       |   16 | NULL                                                                                                    |
|  1 | SIMPLE      | phppos_sales       | eq_ref      | PRIMARY,deleted,location_id,sales_search,phppos_sales_ibfk_10                                 | PRIMARY                     | 4       | phppoint_customer.phppos_sales_items.sale_id |    1 | Using where                                                                                             |
+----+-------------+--------------------+-------------+-----------------------------------------------------------------------------------------------+-----------------------------+---------+-------------------------------------------------------+------+---------------------------------------------------------------------------------------------------------+
3 rows in set (0.00 sec)

0 个答案:

没有答案