数据库
redis查看占用内存大的key
穆琪 发表于2023-05-15 浏览109 评论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
数据库
查询最近一段sql日志中执行时间最长的语句
穆琪 发表于2023-05-09 浏览95 评论0
tail -n 10000 postgresql-2022-09-15_090253.log | grep duration | sort -k 7 -r -n | head -n 10
用这条语句去查最近1w行的sql日志,或者直接grep排序用sort -k 7 -r -n
数据库
es单值与多值查询模板
穆琪 发表于2023-05-09 浏览84 评论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-05-09 浏览80 评论0
背景
我们在使用分区表的时候经常会使用定时任务创建分区表,但是如果表链接没有完全断开,就会锁表。此时就需要一条语句将锁表的sql给终止掉。
语句
SELECT pg_terminate_backend(PID);
pid即为对应的sql语句的pid。
数据库
查看pg中正在执行的语句
穆琪 发表于2023-04-28 浏览78 评论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 浏览52 评论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 浏览661 评论0
在开发过程中,经常会自己造一点数据在数据库。这个时候id就不是那么准了,在程序后面自动插入的时候就会出现id主键冲突。解决办法就是重新设置表主键id的最大值代码如下:select setval('exp_id_seq', (select max(id) from exp));exp代表表名。
数据库
mysql和postgre数据库清除表数据,并且自增列重新从1自增
穆琪 发表于2019-12-26 浏览503 评论0
在 mysql 中如果需要清空表,只需要TRUNCATE TABLE table_name;即可,如果有自增的 id 字段,也会还原回 1,但是 postgresql 与 mysql 稍有不同,postgresql 的自增字段 是通过 序列 sequence来实现的,所以在清空表的时候,还需要还原序列TRUNCATE TABLE table_name RESTART IDENTITY;

数据库
Ubuntu18/linux mint19.2通过系统apt安装mysql5.7之后修改密码
穆琪 发表于2019-12-01 浏览464 评论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
数据库
Mariadb新版本更改root密码
穆琪 发表于2019-08-23 浏览1822 评论0
我在使用xampp安装数据库时想按照原来的mysql5.7以上版本更新root密码,结果发现出现问题:ERROR 1348 (HY000): Column 'authentication_string' is not updatable网上找了一下,发现大部分不符合我的情况,有一个博客说这是Mariadb10.4新版本出现的用户认证问题。MariaDB mysql.global_priv在10.4中引