MySQL怎么将表中一列数据复制到另外一个字段
UPDATE order_user_config SET record_count = count
;
count有数据
注意把有数据的count字段复制到record_count
不要搞反了,搞反了的后果是没有数据的字段复制到了有数据的字段
导致两个字段都为空
MySQL表锁了,强制释放锁
1、查看当前进程
mysql> show processlist;
2、查看当前运行的事务
mysql> SELECT * FROM information_schema.INNODB_TRX;
3、当前出现的锁
mysql> SELECT * FROM information_schema.INNODB_LOCKs;
4、kill掉对应进程
kill id
快速解决
遇到mysql执行sql后锁住的情况可以这样快速的解锁,生产环境慎用
一旦杀错线程会导致本来该执行的sql执行失败
select * from information_schema.INNODB_TRX;
kill trx_mysql_thread_id
索引mysql
//索引:就像查目录一样提高查询速度。但是对update/delete/insert效率会有影响
/**
* @Description:
* @author: samxie
* @date: 2022/6/6
* @param args
* @return: void
* 索引----》二分查找 没有使用索引的时候select * from … where id = …全局扫描表,速度很慢。
* 类型:
* 主键索引,Primary key
* 唯一索引unique
* 普通索引 index
* 全文索引 fulltext 适用于myisam
* 开发中考虑用全文搜索Solr 和ElasticSearch
*
* 如果某列值不会重复的,则优先使用唯一索引unique
* 频繁查询where的字段适合用索引,但是频繁增删改的字段不合适用索引。
* 唯一性太差了不适合做索引,比如性别1 2等
*/
create table index_test ( id int, `name` varchar(32) ); show indexes from index_test; #唯一索引 create unique index id_index on index_test (id); #添加普通索引 create index id_index2 on index_test (id); #添加普通索引2 alter table index_test add index id_index3(id); #添加主键索引 alter table index_test add primary key (id); #删除索引 drop index id_index on index_test; #删除主键索引 alter table index_test drop primary key ;
MySQL事务,串行化,索引
2、MySQL事务
什么?主要用来处理操作量大,复杂度高的数据
例子?在人员管理网站中,你要删除一个人员,不但要删除他的基本信息,而且也要删除他的相关信息,如他的文章,信箱等等
在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。----》 Innodb 数据库引擎
事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。-----》原子性
事务用来管理 insert,update,delete 语句----》增删改
事务要满足的4个条件:
原子性:要么全部执行,要么全部不执行。
一致性:在事务开始之前和事务结束以后,数据库的完整性没有改变—》一致
隔离性:包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。
数据库允许多事务执行,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。隔离性保证了事务并发执行的互不干扰。
持久性:事务处理结束后,对数据库的改变必须是永久的,即便系统故障也不会丢失。—》持久
上面串行化(Serializable)
在这个事务没有被提交之前 其他的线程只能等到当前操作完成之后,才能进行操作,这样会非常耗时,而且,影响数据库的性能,通常情况下,不会使用这种隔离级别
3/索引
----》提高检索速度,高效运行
例子—》字典根据拼音来查询需要的字