Mac 上 Microsoft Autoupdate 问题解决
Mybatis 的常用技巧
多条记录合并为一行
假如有表 stu, 有 name 列如下
name |
---|
小明 |
小李 |
小米 |
现在要把 name 列拼接为一行, 如 小明,小李,小米
, 可以使用如下 sql
1 | SELECT GROUP_CONCAT(name SEPARATOR ',') AS names FROM stu; |
批量插入
1 | <insert id="batchInsert" parameterType="com.xxx.UserDTO" |
批量更新
1 | <update id="batchUpdate" parameterType="com.xxx.UserDTO"> |
in() 有序查询
1 | <select id="findByIdsWithSorted" parameterType="java.lang.Long" resultType="com.xxx.UserDTO"> |
Mysql 配置参数优化
优化最大连接数
max_connections
是 MySQL 最大并发连接数,默认值是 151
MySQL 允许的最大连接数上限是 16384
实际连接数是最大连接数的 85% 较为合适
查询数据库目前设置的最大并发连接数是多少?
1 | SHOW VARIABLES LIKE 'max_connections'; |
查询数据库目前实际连接的并发数是多少
1 | SHOW STATUS LIKE 'max_used_connections'; |
在 MySQL 配置文件 /etc/my.cnf
中设置 max_connections=3000
,表示修改最大连接数为 3000,需要重启 MySQL 才能生效
MySQL 为每个连接创建缓冲区,所以不应该盲目上调最大连接数,如果最大连接数达到了上面设置的 3000,会消耗大约 800M 内存。
优化请求堆栈
back_log 是存放执行请求的堆栈大小,默认值是 50
该值设置为最大并发连接数的 20%~ 30% 较为合适
同样是在 MySQL 配置文件 /etc/my.cnf
中,设置 back_log=600
,修改后需要重启 MySQL 才能生效
修改并发线程数
innodb_thread_concurrency
代表并发线程数,默认是 0,表示没有设置线程数量的上限。
不是分配给 MySQL 的线程越多越好,线程多反而会损耗 cpu 性能,导致速度变慢
并发线程数应该设置为 cpu 核心数的两倍
在 MySQL 配置文件 /etc/my.cnf
中,设置 innodb_thread_concurrency=8
查看 cpu 型号
1 | cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c |
查看 cpu 核心数
1 | cat /proc/cpuinfo | grep "cores"|uniq |
修改连接超时时间
wait-timeout
是超时时间,单位是秒
连接默认超时为 8 小时,连接长期不用又不销毁,浪费资源
设置超时时间为 10 分钟 wait-timeout=600
InnoDB 缓存
修改 InnoDB 缓存大小
innodb_buffer_pool_size
是 InnoDB 的缓存容量,默认是 128M
InnoDB 缓存的大小可以设置为主机内存的 70%~ 80%
在 MySQL 配置文件中,会有一行被注释的配置:# innodb_buffer_pool_size = 128M
上方注释也写明了,建议设置物理内存的 70%
1 | # Remove leading # and set to the amount of RAM for the most important data |
oh-my-zsh国内镜像安装和更新方法
Linux按日期备份命令
1 | # 把 nginx.conf 及 sites-available, sites-enabled 目录压缩以日期结尾备份 |
Docker微容器 Alpine Linux
Springboot 使用 Docker 部署
Docker 远程安全访问
虚拟机安装Debian
下载镜像
http://mirrors.163.com/debian-cd/10.7.0/amd64/iso-cd/debian-10.7.0-amd64-netinst.iso
下载完成后, 打开 PD, 选择镜像安装即可, 在选择安装软件时我选择的: ssh server 和 标准工具集