mysql查询本周的数据
一、查询某一天的周数SQL Server计算周数时会算上年初的不满的一周。Mysql计算周数时不会算上年初的不满的一周1.1(SQL Server)在 SQL Server 中默认情况下,每周的开始都...
2024.11.08mysql其实在我们使用的时候比较容易造成表被锁的情况,尤其是高并发或者业务执行时间过长时,下面介绍一下几种容易除夕拿锁表的问题,如果错误的地方大家多多交流
例如以下的几种方式
目前有表 test , 字段分别有 id,name,age
show full PROCESSLIST 查询表的执行情况
1 查询时 mysql的innodb 支持for update 行级锁 (悲观锁)
select * from test where name=‘行锁‘ for update;
如果 name没有加索引则会造成锁表,直到事务执行完毕后
如果有索引的话就只会锁行
如果搜索条件增加了索引但是没有搜索到数据不会造成锁表
2 update/delete(删除就不做演示) 时
开启一个窗口A:
执行
START TRANSACTION;
update test set name=‘窗口A‘ where age=‘10‘;、
正在执行事务:无索引
不提交
新开一个窗口B:
执行
START TRANSACTION;
update test set name=‘窗口B‘ where age=‘12‘;
此时你会发现 窗口B没有任何反应如图:
正在执行事务:无索引
查询时间一直在增加,可见是进行了锁表
所以在高并发情况下就会出现这种锁表的情况导致后面的线程阻塞,那么怎么解决呢?
加索引 在age 上面加个索引
正在执行事务:添加索引后
加索引后就不会出现这个问题了,相当于变成了行级锁 完美解决
3 insert也会造成死锁
这个就比较复杂了有兴趣的朋友可以自行网上查查
如果大家觉得好可以点赞,关注一波,谢谢
一、查询某一天的周数SQL Server计算周数时会算上年初的不满的一周。Mysql计算周数时不会算上年初的不满的一周1.1(SQL Server)在 SQL Server 中默认情况下,每周的开始都...
2024.11.08判断数据库某表或某字段是否存在,也是我们实际应用中经常进行的一种操作,本文将介绍如何在 MySQL、Oracle、PostgreSql 数据库中判断表或字段是否存在。MySQL数据库判断 MySQL ...
2024.11.15//查看所有进程show processlist;//查询是否锁表show OPEN TABLES where In_use > 0;//查看被锁住的select * FROM INFORMATION...
2024.11.11查看表是否被锁:直接在mysql命令行执行:show engine innodb status\G。查看造成死锁的sql语句,分析索引情况,然后优化sql.然后show processlist,查看造...
2024.11.11【本文详细介绍了数据库的基础知识之SQL查看和修改表结构,欢迎读者朋友们阅读、转发和收藏!】1 查看表结构查看表结构是指查看数据库中已存在的表的定义。查看表结构的语句包括 DESCRIBE 语句和 S...
2024.11.15