简单实用
- 提供一个简单例子来使用 ThreadLocal
- 声明 ThreadLocal,比如:
private static final ThreadLocal<Object> threadLocal = new NamedThreadLocal<>("logs");
- 先暂时省略 set 步骤,当需要 threadLocal 的时候,我们通常是:threadLocal.get()
threadLocal.get()
- 先看代码:
...小于 1 分钟
private static final ThreadLocal<Object> threadLocal = new NamedThreadLocal<>("logs");
测试数据库版本:5.7.34
执行show variables like '%row_format%';
查看当前版本支持的 row 格式,例如:
执行select version();
查看当前 mysql 版本,我本地版本是5.7.41
show engines;
查看当前 MySql 的所有引擎列表MySql 给我们提供了 explain 命令来分析 Sql 语句的性能,
获取需要分析执行计划的 Sql 语句,加 expalin 命令,格式explain sql语句
,会得到以下的结果:
mysql> explain select * from users;
+----+-------------+-------+------------+-------+---------------+--------------+---------+------+------+----------+-------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+-------+------------+-------+---------------+--------------+---------+------+------+----------+-------------+
| 1 | SIMPLE | users | NULL | index | NULL | idx_username | 259 | NULL | 1 | 100.00 | Using index |
+----+-------------+-------+------------+-------+---------------+--------------+---------+------+------+----------+-------------+
1 row in set, 1 warning (0.00 sec)
mysql>
Redis 常见的命令执行速度都很快,算法复杂度基本都在 O(1) 级别,但是也有一些算法复杂度在 O(n) 级别,再加上数据量过大的情况,就会导致很慢,比如
keys *
命令排查:
slowlog get {n}
命令来获取最近的 n 条慢查询命令,默认会将执行超过10ms的命令记录到队列当中,info commandstats
命令来分析命令的不同执行时间,可以通过查看字段 usec_per_call 平均耗时来排查,单位是微秒Redis 的内存管理主要从以下两个方面入手:
Redis 提供了 maxmemory 参数来限制最大可用内存,限制的目的有:
更改内存上限:
config set maxmemory
进行动态修改最大可用内存Redis 之前的集群方案一般有两种:
作用
问题