MySQL运维实战之ProxySQL(9.7)改写SQL

俊达2年前技术文章964

使用查询修改功能,可以在不改变应用程序的情况下,修改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这样的方式引用。



相关文章

Redis 热 key

1、hotkeys该方案只能针对于 key 的过期淘汰策略为 allkeys-lfu 或者 volatile-lfu 的实例。-----查看淘汰策略 config get maxmemory-pol...

log_queries_not_using_indexes参数设置

log_queries_not_using_indexes参数设置

【现象】通过查看慢日志发现有如下信息: 如上慢日志里出现较多 'index not used' warning(s) suppressed 信息;该信息主要是因为开启 log_queries_not_...

MySQL 8.0 不可见索引使用

一、具体信息1、在提供 SQL 优化意见的时候包括了两个冗余索引的内容,具体内容如下:查看慢 SQL 的时候发现 database 库 table 表中存在冗余索引,具体冗余索引情况如下:KEY `k...

开源大数据集群部署(二十)Trino部署

开源大数据集群部署(二十)Trino部署

2.9.1 解压trino的包到opt目录cd /root/bigdata tar -xzvf trino-server-389.tar.gz -C /opt/ ln -s /opt/trino-...

Go 链表的实现

Go 链表的实现

链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:...

NameNode和SecondaryNameNode工作详解

NameNode和SecondaryNameNode工作详解

一、NN和SNN工作机制我们可以思考一个问题:NameNode中的元数据是存储在哪里的首先假设,如果存储在NameNode节点的磁盘中,因为经常需要进行随机访问NameNode的元数据,响应客户请求,...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。