1、mysql8版本 group by 字段要对应 有自己的排序函数:rank
:编写的sql 别名不要用rank 或做下处理 加单引号 'rank'
2、mybatis plus 对全表更新 删除 禁用 (安全问题)
:不允许做全表更新和删除
3、表分区
insert into ..select 语句不支持
: DATE_FORMAT() 函数不支持分区
:分区注解 @DS("gits_sharding")
application.yml 配置样例:
shardingsphere:
datasource:
names: sharding-order-system
sharding-order-system:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
url: ${mysql.jdbcurl}
username: ${mysql.username}
password: ${mysql.password}
props:
sql.show: true
sharding:
tables:
jyjl:
actualDataNodes: sharding-order-system.jyjl_$->{0..9}
databaseStrategy:
none:
tableStrategy:
inline:
shardingColumn: id
algorithmExpression: yjl_$->{id[-1..-1]}
jymx:
actualDataNodes: sharding-order-system.ymx_$->{0..9}
databaseStrategy:
none:
tableStrategy:
inline:
shardingColumn: id
algorithmExpression: jymx_$->{id[-1..-1]}
4、连接mysql8
mysql -uroot -p -P3308 -S/mysq.sock(此文件目录) 端口号3308
5、linux下 mysql 操作:
show database;
use 数据库名
后台dump 备份:
1>、整个数据库 表结构和数据
nohup ./mysqldump -uroot -p123456 -P3308 -S/mysql80/mysql.sock -e --max_allowed_packet=200M --net_buffer_length=10M --databases 数据库名 --column-statistics=0 >/usr/local/dump/jds_uat.dump &
2>、仅数据,且可有条件where:(在mysql bin 下执行)
./mysqldump -uroot -p -P3308 -S/usr/mysql80/mysql-8.0.23-el7-x86_64/mysql.sock --no-create-info --databases 数据库名--tables 表名 --where="JYR = '20211122'" > /usr/local/dump/xx.dump
dump 还原:(在dump文件所在地方执行)
mysql -uroot -f -p密码 数据库 < 数据库.dump
-f :省略错误 继续执行
如导出数据量大 ,mysqldump 用法 可参考:
from: MySQL mysqldump数据导出详解 - pursuer.chen - 博客园
服务器查看系统命令:
6、CPU 使用率 top
举例:
97.0id,表示空闲CPU,即CPU未使用率,100%-97.0%=3%,即系统的cpu使用率为3%
7、内存使用率:free -h
total 总内存 = used + free + buff/cache
8、磁盘使用率 df
Use% 磁盘使用率
9、oralce命令形式登录oracle: sqlplus usename/密码@IP:端口/服务名
注意:密码里有特殊符号 需要用单引号引起来。权限的话加上sudo
<foreach collection="list" item="item" index="index" separator=","> // 生成随机数: 时间戳+ 序号 : concat(unix_timestamp(now()), #{index}+1) </foreach>
mysql:强制走索引
force index (IDX_SETL_DATE,IDX_JYMX_ITEM_NONAME)
### 某一批次,根据机构分组,特征值排序,特征值前五名:自身表更新,mysql 写法
)
第一种方法:
UPDATE cred_ftur_kpi_rslt_d t,
(
SELECT
a.medins_code,
a.warn_bchno,
a.ftur_kpi_code
FROM
cred_ftur_kpi_rslt_d a
JOIN cred_ftur_kpi_rslt_d b
ON a.medins_code = b.medins_code
AND a.warn_bchno = b.warn_bchno
AND a.ftur_kpi_code = b.ftur_kpi_code
AND a.warn_bchno = 'YD2023089001'
AND b.warn_bchno = 'YD2023089001'
and a.medins_code in (
'YD140400500'
)
WHERE
a.ftur_infl_val <= b.ftur_infl_val
GROUP BY
a.medins_code,
a.warn_bchno,
a.ftur_kpi_code
HAVING
COUNT(1) <= 5
) t2
SET t.ftur_flag = '0'
WHERE
t.medins_code = t2.medins_code
AND t.warn_bchno = t2.warn_bchno
AND t.ftur_kpi_code = t2.ftur_kpi_code
第二种方法:
UPDATE cred_ftur_kpi_rslt_d t inner join
(
SELECT
a.medins_code,
a.warn_bchno,
a.ftur_kpi_code
FROM
cred_ftur_kpi_rslt_d a
JOIN cred_ftur_kpi_rslt_d b ON a.MEDINS_CODE = b.MEDINS_CODE
AND a.warn_bchno = b.warn_bchno
AND a.warn_bchno = 'YD2023089001'
AND b.warn_bchno = 'YD2023089001'
and a.MEDINS_CODE in (
'YD140400500'
)
WHERE
a.ftur_infl_val <= b.ftur_infl_val
GROUP BY
a.medins_code,
a.warn_bchno,
a.ftur_kpi_code
HAVING
COUNT(1) <= 5
ORDER BY
a.ftur_infl_val DESC
) t2
on t.medins_code = t2.medins_code
AND t.warn_bchno = t2.warn_bchno
AND t.ftur_kpi_code = t2.ftur_kpi_code
SET t.ftur_flag = '0'
第三种:更新效率慢
update cred_ftur_kpi_rslt_d set ftur_flag = '0' where rid in (
select rid from (
SELECT
rid
FROM
tableName a
WHERE
5> (
SELECT COUNT(b.rid ) FROM tableName b
WHERE b.medins_code = a.medins_code
and b.warn_bchno = a.warn_bchno
AND b.ftur_infl_val > a.ftur_infl_val
)
and a.warn_bchno = '11'
ORDER BY
a.medins_code,
a.warn_bchno,
a.ftur_infl_val desc
) t2
额外clickhouse:
ClickHouse不支持主键和唯一键约束,所以在转换过程中,我们将主键和唯一键约束转换为了ORDER BY子句。此外,ClickHouse不支持text类型,所以我们将所有的text类型转换为了String类型。