mysql 中 long 时间的转换
在开发中,有时候为方便将日期时间以 long 类型(秒钟)存在数据库,这里要查询数据就需要进行转换。 在 mysql 中只要使用from_unixtime
函数就可以了。
附 mysql 的两个转换函数:
在 mysql 数据库中,“2018-06-01 00:00:00”转化为列为长整型的函数:
select unix_timestamp("2018-06-01 00:00:00")*1000
, 这里要注意,mysql 数据库中的长整型,比 java 中的长整型少了秒后面的毫秒数,所以要乘以 1000,这样只有几毫秒之差在 mysql 数据库中,“1527782400000”(java 中的 long 型数据)转化为日期:
select from_unixtime(1527782400)
; 【注】:要将最后三位去掉。
mysql> select unix_timestamp("2018-06-01 00:00:00");
+---------------------------------------+
| unix_timestamp("2018-06-01 00:00:00") |
+---------------------------------------+
| 1527782400 |
+---------------------------------------+
1 row in set (0.00 sec)
----------
mysql> select from_unixtime(1527782400);
+---------------------------+
| from_unixtime(1527782400) |
+---------------------------+
| 2018-06-01 00:00:00 |
+---------------------------+
1 row in set (0.00 sec)
too many connections 解决方法
show processlist;
查看连接数,可以发现有很多连接处于sleep
状态,这些其实是暂时没有用的,所以可以 kill 掉
show variables like "max_connections";
查看最大连接数,应该是与上面查询到的连接数相同,才会出现too many connections
的情况
set GLOBAL max_connections=1000;
修改最大连接数,但是这不是一劳永逸的方法,应该要让它自动杀死那些 sleep 的进程。
show global variables like 'wait_timeout';
这个数值指的是 mysql 在关闭一个非交互的连接之前要等待的秒数,默认是 28800s
set global wait_timeout=300;
修改这个数值,这里可以随意,最好控制在几分钟内
set global interactive_timeout=500;
修改这个数值,表示 mysql 在关闭一个连接之前要等待的秒数,至此可以让 mysql 自动关闭那些没用的连接,但要注意的是,正在使用的连接到了时间也会被关闭,因此这个时间值要合适。
解决办法
批量 kill 之前没用的 sleep 连接
- 先把要 kill 的连接 id 都查询出来
select concat('KILL ',id,';') from information_schema.processlist where user='root';
- 复制中间的
kill id;
内容到 word 文档 替换掉符号“ ”和回车符(在 word 中查询 ^p 即可查询到回车符) - 把修改过的内容复制回终端,最后按回车执行!
文档信息
- 本文作者:Zhang jinmiao
- 本文链接:http://zhangjinmiao.github.io/mysql/2019/04/22/MySQL%E5%B9%B3%E6%97%B6%E7%A7%AF%E7%B4%AF%E6%8A%80%E5%B7%A7.html
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)