推荐文章
- 1 PostgreSQL字符串类型与函数使用解析
- 2 Linux系统安装DM8(达梦)数据库
- 3 Linux系统安装KingbaseES(人大金仓)数据库
- 4 信创之国产数据库及兼容性概况
- 5 安装和配置达梦数据库的ODBC驱动
- 6 DBeaver安装与使用教程--好用免费的数据库管理工具
- 7 浅聊数据库设计SQL优化
- 8 MSSQL STUFF函数用法之深入理解
- 9 MySQL数据库开发相关规范
- 10 MySQL索引介绍及索引优化原则总结
- 11 SQL Server Profiler工具简介及使用方法
- 12 C# VS2019创建和发布webservice服务接口入门
- 13 Sqlserver 开窗函数over()的语法
- 14 SQL强大的行转列功能(内置函数pivot及注意事项)
发布
1
积分
60
PostgreSQL字符串类型与函数使用解析
技术笔记2周前
本篇博文将浅析PostgreSQL中的字符串字段特性及其相关的函数,并通过大量的代码样例展示这些函数的具体用法。
发布
134
积分
1151
Linux系统安装DM8(达梦)数据库
技术笔记1个月前
在文末附上了自带DM管理工具DM数据库的方法。
发布
134
积分
1151
Linux系统安装KingbaseES(人大金仓)数据库
技术笔记1个月前
在文末附上了自带KStudio管理工具和通过DBeaver连接Kingbase数据库的方法。
发布
134
积分
1151
信创之国产数据库及兼容性概况
动态分享1个月前
本文从一张对比表入手,谈谈国内不同厂商的数据库产品,并简单介绍下各家的兼容性情况。
发布
134
积分
1151
安装和配置达梦数据库的ODBC驱动
技术笔记2023年9月6日
此篇博文中我将一步步带领大家安装和配置达梦数据库的ODBC驱动。
发布
134
积分
1151
DBeaver安装与使用教程--好用免费的数据库管理工具
技术笔记2023年4月12日
DBeaver 通过 JDBC 连接到数据库,可以支持几乎所有的数据库产品,包括:MySQL、PostgreSQL、MariaDB、SQLite、Oracle、Db2、SQL Server、Sybase、MS Access、Teradata、Firebird、Derby 等等。
本篇博文将简单介绍DBeaver安装与使用。
发布
134
积分
1151
浅聊数据库设计SQL优化
技术笔记2022年9月23日
把对数据库的读写操作分到不同的数据库服务上,以实现数据库的高性能和高并发能力;读写分离最大的弊端就是复制延迟,对于以查询为主的项目比较合适,看项目进行取舍。
发布
134
积分
1151
MSSQL STUFF函数用法之深入理解
技术笔记2022年5月7日
STUFF字符串函数是将字符串插入到另一个字符串中,STUFF最常见的用途结合FOR XML PATH对返回JSON字符串的拼接。
发布
134
积分
1151
MySQL索引介绍及索引优化原则总结
技术笔记2022年4月28日
本篇博文详细的介绍了索引优化的20个原则,只要在工作中能够随时应用到,相信你写出的SQL能够命中索引,效率杠杠的。
发布
134
积分
1151
SQL Server Profiler工具简介及使用方法
技术笔记2021年3月10日
故写此篇博文简单介绍SQL Server Profiler工具、BS系统的跟踪办法、数据库优化引擎。
发布
134
积分
1151
C# VS2019创建和发布webservice服务接口入门
技术笔记2021年3月4日
发布
134
积分
1151
日常工作常用的各种数据库脚本
技术笔记2024年7月16日
发布
134
积分
1151
MySQL数据库开发相关规范
技术笔记2022年5月6日
发布
134
积分
1151
MSSQL清库语句
技术笔记2021年3月24日
发布
134
积分
1151
截取SQL字符串的函数
技术笔记2021年2月22日
发布
134
积分
1151
有趣的SQL多行数据拼接
技术笔记2021年2月22日
发布
134
积分
1151
SQL分页存储过程(汇总)
技术笔记2021年2月22日
发布
134
积分
1151
数据库死锁问题及解决方法
技术笔记2021年2月22日
每个使用关系型数据库的程序都可能遇到数据死锁的情况。理解什么是死锁之前先要了解锁定的概念:如果需要“修改”一条数据,首先数据库管理系统会在上面加锁,以保证在同一时间只有一个事务能进行修改操作。锁定(Locking)发生在当一个事务获得对某一资源的“锁”时,这时,其他的事务就不能更改这个资源了,这种机制的存在是为了保证数据一致性。
多数情况下,可以认为如果一个资源被锁定,它总会在以后某个时间被释放。而死锁发生在当多个进程访问同一数据库时,其中每个进程拥有的锁都是其他进程所需的,由此造成每个进程都无法继续下去。简单的说,进程A等待进程B释放他的资源,B又等待A释放他的资源,这样就互相等待就形成死锁。
导致数据库死锁的原因:
一般情况只发生锁超时,就是一个进程需要访问数据库表或者字段的时候,另外一个程序正在执行带锁的访问(比如修改数据),那么这个进程就会等待,当等了很久锁还没有解除的话就会锁超时,报告一个系统错误,拒绝执行相应的SQL操作。
发生死锁的情况比较少,比如一个进程需要访问两个资源(数据库表或者字段),当获取一个资源的时候进程就对它执行锁定,然后等待下一个资源空闲,这时候如果另外一个进程也需要两个资源,而已经获得并锁定了第二个资源,那么就会死锁,因为当前进程锁定第一个资源等待第二个资源,而另外一个进程锁定了第二个资源等待第一个资源,两个进程都永远得不到满足。