MySQL运维实战之ProxySQL(9.7)改写SQL
使用查询修改功能,可以在不改变应用程序的情况下,修改SQL语句。比如,我们可以使用SQL改写的功能,给SQL添加hint,以此来优化性能。
delete from mysql_query_rules; insert into mysql_query_rules (rule_id, username, match_pattern, replace_pattern, destination_hostgroup, active, apply, comment ) values (20, 'user1', '^SELECT\s+(.*?)\s+FROM\s+ta\s+where\s+a\s+=\s+(\d+)$', 'SELECT \1 FROM ta force index(idx_a) WHERE A = \2', 101, 1, 1, 'add force index'); load mysql query rules to runtime;
在上面的例子中,我们给查询加上了force index的hint。
查询修改是通过正则表达式实现的。
match_pattern中,可以将表达式通过括号括起来,
replace_pattern中,可以应用match_pattern匹配到的括号中的内容,使用\1 \2这样的方式引用。