美文网首页周记
周记 2017 5.8 - 5.14

周记 2017 5.8 - 5.14

作者: 小程有话说 | 来源:发表于2017-05-08 15:15 被阅读7次

Mysql解决死锁问题

参考

死锁(英语:Deadlock),又译为死结,计算机科学名词。当两个以上的运算单元,双方都在等待对方停止运行,以获取系统资源,但是没有一方提前退出时,就称为死锁。 -- 引用自维基百科。

mysql> select * from user;
+----+------+------+---------+
| id | name | age  | address |
+----+------+------+---------+
|  3 | 1    |   26 | 1       |
|  4 | 1    |    1 | 1       |
+----+------+------+---------+

有一张user表,id是主键,那么执行如下操作会造成死锁:

A:
start transaction;
select * from user where id=3 for update;
B:
start transaction;
select * from user where id=4 for update;
A:
select * from user where id=4 for update;
B:
select * from user where id=3 for update;
执行到这里,A、B两个数据库连接都会阻塞。

处理死锁问题:

show processlist  # 显示当前DB所有连接信息,如果有连接处于阻塞状态,则会有如下显示
阻塞图例
kill id  # 杀死对应连接,这样就会释放掉占用的锁
show engine innodb status  # 显示索引状态,因为innodb引擎会在索引上进行加锁,执行这条语句会返回引擎的各种信息(比如):

TRANSACTIONS
------------
Trx id counter 69598
Purge done for trx's n:o < 69594 undo n:o < 0 state: running but idle
History list length 1036
LIST OF TRANSACTIONS FOR EACH SESSION:
---TRANSACTION 281479623174360, not started
0 lock struct(s), heap size 1136, 0 row lock(s)
---TRANSACTION 281479623173456, not started
0 lock struct(s), heap size 1136, 0 row lock(s)
---TRANSACTION 281479623170744, not started
0 lock struct(s), heap size 1136, 0 row lock(s)
---TRANSACTION 281479623169840, not started
0 lock struct(s), heap size 1136, 0 row lock(s)
---TRANSACTION 69597, ACTIVE 89 sec
2 lock struct(s), heap size 1136, 1 row lock(s)  # 显示该事务锁住一行数据
MySQL thread id 1124, OS thread handle 123145506287616, query id 130081 localhost root cleaning up
--------

Maven 引入本地jar包

参考

<dependency>
    <groupId>xxx</groupId>
    <artifactId>xxx</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>/.../xxx.jar</systemPath>
</dependency>

这种方法是有缺陷的,仅仅适用于开发阶段,如果使用 maven package 命令不会把该包打入jar中。

这个缺陷有一种比较好的解决方案是参考链接中 Nikita Volkov 回答的方法。

MySql连接问题

给朋友写的脚本要把数据插入MySql数据库,在本地测试插入没有问题;但是在朋友机器上插入之后出现乱码。
配置如下:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test
    username: root
    password:
    driver-class-name: com.mysql.jdbc.Driver

出现的乱码都是??,所以估计是把UTF-8编码格式当做ISO-8859-1进行编码。
把上述配置修改后插入正常。

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
    username: root
    password:
    driver-class-name: com.mysql.jdbc.Driver

useUnicode=true&characterEncoding=UTF-8代表使用指定的编码集UTF-8来进行编码。
那么为什么本地没有问题而朋友机器上有问题呢,原因是本地MySql服务器和数据库都是以UTF-8编码的;而朋友机器上仅仅数据库是UTF-8编码的,如果没有指定编码格式数据库会按照默认ISO-8859-1进行编码从而导致乱码。

相关文章

  • 周记 2017 5.8 - 5.14

    Mysql解决死锁问题 参考 死锁(英语:Deadlock),又译为死结,计算机科学名词。当两个以上的运算单元,双...

  • 2017-5.8-5.14周训练记录

    5.8 周一 休息 5.9 周二 晨跑7km,拉伸。 练肩日:每周二肩胸日主练肩,哈哈哈 1.杠铃臂屈伸 10*4...

  • 周作业(5.8-5.14)

    交作业( ˘ ³˘)ℒ❁Ѵ℮ 1:其实还不太熟练啦 只会唱第一段 2:get! 3:get! 4:get! 最后祝...

  • 第五周检视与第六周行动清单

    第五周(5.8-5.14)周检视: ①六天早五一天,只有一天做到晚十入睡; ②上周3天学习3小时,阅读1本书; ③...

  • 自律践行的一周

    2022的第19周(5.8-5.14)复盘,关键词: 母亲节 践行 美食 睡眠 早睡早起,华为手环数据,平均入睡2...

  • 2017W19 | 5.8--5.14 周总结

    A mother's arms are made of tenderness and children sleep...

  • 第19周检视(5.8-5.14)

    我敞开自己 接受世界上所有的财富和幸运 @筱丽/ ?家庭? 1.几乎每天都有和哥哥姐姐们聊天 2.母亲节和妈妈通话...

  • 小壮晨读第三周

    5.8-5.14小壮晨读第三周:《中庸》2、《论语》里仁第四。坚持了21天,慢慢让他感觉到如刷牙洗脸一样,读经典也...

  • 周检视5月第二周

    周检视Ariesyang 2017年5月第1周(5.8-5.15) 1. 叫我起床的不是闹钟是梦想 2017年度目...

  • 开发周记及问答系列集v0.1

    开发周记(2017/3/26-2017/4/2) 开发周记(2017/4/3-2017/4/9) 开发周记(201...

网友评论

    本文标题:周记 2017 5.8 - 5.14

    本文链接:https://www.haomeiwen.com/subject/hzgmtxtx.html