×

数据库

redis查看占用内存大的key

穆琪 穆琪 发表于2023-05-15 浏览197 评论0

背景

在测试环境中,经常出现某些同事乱用redis存数据,导致redis内存不够用,所以有下面的命令来查redis的内存占用和占用大的key。

命令

查看redis占用内存信息

docker环境:

docker exec -i redis redis-cli -h 127.0.0.1 -p 6379 -a <password> -n 1 info Memory

数据库

es单值与多值查询模板

穆琪 穆琪 发表于2023-05-09 浏览139 评论0

背景

在开发过程中,经常遇到要去es中查询数据排查问题的情况,这时候就需要有一个简单的模板带入参数进行查询。

语句

# 单值
curl -XGET  localhost:9200/xxx/_search?pretty -d '{"query":{"term":{"":""}},"from":0,"size":1}'
# 多值
curl -XGET  localhost:9200/xxx/_search?pretty -d '{"query":{"bool":{"must":[{"term":{"attacker":"x.x.x.x"}},{"term":{"victim":"x.x.x.x"}}]}},"from":0,"size":1}'

数据库

查看pg中正在执行的语句

穆琪 穆琪 发表于2023-04-28 浏览141 评论0

1.背景

有时候代码写的不好,会导致sql性能比较差,比如乱用in_。这时候就需要查看pg中正在执行的语句,看哪些语句执行时间过长。

2.sql语句

select pid,
       datname,
       usename,
       client_addr,
       application_name,
       state,
       backend_start,
       xact_start,
       xact_stay,
       query_start,
       query_stay,
       replace(query, chr(10), ' ') as query
from
  (select pgsa.pid as pid,
          pgsa.datname as datname,
          pgsa.usename as usename,
          pgsa.client_addr client_addr,
          pgsa.application_name as application_name,
          pgsa.state as state,
          pgsa.backend_start as backend_start,
          pgsa.xact_start as xact_start,
          extract(epoch
                  from (now() - pgsa.xact_start)) as xact_stay,
          pgsa.query_start as query_start,
          extract(epoch
                  from (now() - pgsa.query_start)) as query_stay,
          pgsa.query as query
   from pg_stat_activity as pgsa
   where pgsa.state != 'idle'
     and pgsa.state != 'idle in transaction'
     and pgsa.state != 'idle in transaction (aborted)') idleconnections
order by query_stay desc;

数据库

批量停止pg的锁表语句脚本

穆琪 穆琪 发表于2023-04-26 浏览104 评论0

1.背景

线上服务器每月都会创建下一个月的数据表的分区表,但是表在使用的时候创建分区容易造成锁表,所有自动化实现kill掉数据库中锁表的语句。

2.脚本内容

pid=`echo "SELECT * FROM pg_stat_activity where wait_event_type = 'Lock';" | docker exec -i postgres psql -p 5432 -U postgres --db 'test' | awk '{if (NR>2){print $5}}' | awk 'NR>1{print line}{line=$0}' | awk 'NR>1{print line}{line=$0}'`
echo 'Lock sql pid is '$pid
for i in $pid
do
    echo "SELECT pg_terminate_backend("$i");" | docker exec -i postgres psql -p 5432 -U postgres --db 'test'
done

数据库

PostGresql更改自增ID值

穆琪 穆琪 发表于2020-10-15 浏览738 评论0
在开发过程中,经常会自己造一点数据在数据库。这个时候id就不是那么准了,在程序后面自动插入的时候就会出现id主键冲突。解决办法就是重新设置表主键id的最大值代码如下:select setval('exp_id_seq', (select max(id) from exp));exp代表表名。
Ubuntu18/linux mint19.2通过系统apt安装mysql5.7之后修改密码

数据库

Ubuntu18/linux mint19.2通过系统apt安装mysql5.7之后修改密码

穆琪 穆琪 发表于2019-12-01 浏览519 评论0
我使用的是基于linux mint19.2的系统,apt源自带的是mysql5.7安装完后却不是空密码。原来似乎在安装的时候就已经设置了默认密码。接下来就是怎么修改root密码的步骤:1.进入到etc/mysql 目录下,查看debian.cnf文件里面有个帐号和密码用这个帐号和密码登录2.修改root密码show databases; use mysql; update user set authentication_string=PASS