Прокси SQL маршрутизация ROW_COUNT и LAST_INSERT - PullRequest
0 голосов
/ 17 июня 2020

Я использую прокси sql версия 2.0.12, мультиплексирование включено. У нас есть некоторый набор запросов на обновление, которые выполняются каждую секунду, за которыми следует SELECT ROW_COUNT () для каждого обновления. Точно так же вставки, за которыми следует select last_insert_id () Таким образом, проблема в том, что иногда я получаю правильные значения, иногда row_count просто выдает -1, мне здесь не хватает какой-то конфигурации.

Пример запроса:

mysql> update t1 set c1=10;
Query OK, 4 rows affected (0.00 sec)
Rows matched: 4  Changed: 4  Warnings: 0

mysql> SELECT ROW_COUNT();
+-------------+
| ROW_COUNT() |
+-------------+
|           4 |
+-------------+
1 row in set (0.00 sec)


mysql> update t1 set c1=8;
Query OK, 4 rows affected (0.00 sec)
Rows matched: 4  Changed: 4  Warnings: 0

mysql> SELECT ROW_COUNT();
+-------------+
| ROW_COUNT() |
+-------------+
|          -1 |
+-------------+
1 row in set (0.00 sec)



Мультиплексные переменные:

mysql> select * from global_variables where variable_name like '%multi%';
+--------------------------------------+----------------------+
| variable_name                        | variable_value       |
+--------------------------------------+----------------------+
| mysql-client_multi_statements        | true                 |
| mysql-connection_delay_multiplex_ms  | 0                    |
| mysql-multiplexing                   | true                 |
| mysql-auto_increment_delay_multiplex | 5                    |
| mysql-keep_multiplexing_variables    | tx_isolation,version |
+--------------------------------------+----------------------+
5 rows in set (0.01 sec)

mysql> 

MySQl правила запроса:

20 is the read hostgroup and 10 is write hostgroup

mysql> select rule_id,active,destination_hostgroup,match_pattern,multiplex from mysql_query_rules;
+---------+--------+-----------------------+------------------------+-----------+
| rule_id | active | destination_hostgroup | match_pattern          | multiplex |
+---------+--------+-----------------------+------------------------+-----------+
| 1       | 1      | 20                    | ^SELECT                | 1         |
| 2       | 1      | 10                    | ^SELECT .* FOR UPDATE$ | 1         |
+---------+--------+-----------------------+------------------------+-----------+
4 rows in set (0.00 sec)

mysql> 
...