mysql锁
背景介绍
在开发过程中突然发现数据库查询不出来结果,猜想是数据表被锁住了,网上查询后,执行命令解决。记录下来,方便备查。
1、查看进程
执行命令,查询数据库的所有连接信息。
// 显示连接的进程
show processlist
关注几个指标参数 id : 表示进程的id user : 表示连接的用户 info : 表示执行的语句,这里显示的是查询命令
2、杀死进程
查找所有进程,手动杀死执行时间较长的进程即可。
// 杀死进程
kill id
执行前两个命令就可以实现表的解锁,以下命令积累下来,方便日产工作。
3、查看是否锁表
// 查看是否锁表
show OPEN TABLES;
// 解锁表
UNLOCK TABLES;
关注的参数 In_use : 正在使用的的数量 Name_locked :被锁住的数量
4、查看事务
// 查看正在锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
// 查看等待锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
5、添加索引
索引分为主键索引、唯一索引,普通索引和联合索引等。以 user 用户表为例,记录下各种操作,方便加深印象。 建库脚本
// 创建数据库脚本
CREATE TABLE `user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(12) NOT NULL COMMENT '姓名',
`sex` varchar(2) NOT NULL COMMENT '性别',
`idCard` varchar(18) NOT NULL COMMENT '身份证号',
`phone` varchar(18) NOT NULL COMMENT '手机号',
`minority` varchar(20) NOT NULL COMMENT '民族',
`birth_date` datetime NOT NULL COMMENT '出生日期',
`interests` varchar(512) NOT NULL COMMENT '爱好'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户信息表';
执行以下命令,感觉索引的魅力,能提高检索的速度。
// 查看建库脚本
show create table user;
// 1) 添加PRIMARY KEY(主键索引)
ALTER TABLE `user` ADD PRIMARY KEY (`id`) ;
// 2) 添加UNIQUE(唯一索引)
ALTER TABLE `user` ADD UNIQUE (`idCard`);
// 3) 添加INDEX(普通索引)
ALTER TABLE `user` ADD INDEX index_phone (`phone`);
// 4) 添加FULLTEXT(全文索引)
ALTER TABLE `user` ADD FULLTEXT (`name`);
// 5) 添加多列索引
ALTER TABLE `user` ADD INDEX index_id_name (`id`, `name`, `phone`);
6、删除索引
// 格式
drop index index_name on table_name
// 删除普通索引
drop index index_phone on user
7、添加字段
// 添加性别字段
alter table user add COLUMN sex varchar(2) DEFAULT null COMMENT '性别';
这样添加的字段会在表的最后一列,如何让它排列到指定位置,可以使用 after 关键字。
// 添加性别字段
alter table user add COLUMN sex varchar(2) DEFAULT null COMMENT '性别' after name;
8、修改字段
如果想更改日期,注释,或者将不为空修改为允许为空,使用 modify 关键字。
// 添加性别字段
alter table user modify sex varchar(2) DEFAULT null COMMENT '性别';
9、递增主键如何重新开始
// 重新设置主键为指定的值,起始值
alter table table_name AUTO_INCREMENT=n
10、设置更新字段
表中添加个字段,数据变化(新增、修改)都要更新它为当前的日期。
// 添加自动更新字段update_time_auto
alter table user add column update_time_auto datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
知识学习 1) default current_timestamp 表示当插入数据的时候,该字段默认值为当前时间 2) on update current_timestamp 表示每次更新这条数据的时候,该字段都会更新成当前时间
11、oracle锁库的处理方法
可以参照之前的博客 地址:https://editor.csdn.net/md/?articleId=107723390
参考博客
【1】https://blog.csdn.net/qq_41573234/article/details/80328281