大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
白话解说如下:
邵阳网站制作公司哪家好,找创新互联公司!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设等网站项目制作,到程序开发,运营维护。创新互联公司自2013年起到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联公司。
简单说,就是lock
table,不让别人动
锁分共享锁和排它锁。
共享锁时,别人能读,不能改变量表数据
排它锁时,别人既不能读,也不能改表数据
根据以上特点,应该就知道何时使用锁了。不想让别人变更数据,对自己产生影响,就加锁。一定要在不用之后,进行锁释放,不然,应用系统会一直因为读取数据而报错。
好处就是,保证数据的原子性,完整性,一致性。
只有加锁者释放了锁,别人才能改变数据。
缺点就是,增加了系统开销,有可能产生锁等待,造成数据库运行异常。这都是不正常的使用锁带来的问题。
给高并发情况下的mysql进行更好的优化
MySQL有三种锁的级别:页级、表级、行级,这3种锁的特性可大致归纳如下:
表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。
页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。
有时候,会很不小心,在业务运行中执行了一条锁表语句。这时候该怎么办?
例如:修改元数据。
SHOW FULL PROCESSLIST 查看一下:
发现修改之后,锁表了。这时候怎么办? 杀死它 KILL 4623660
然后一切又恢复正常了。
一般对于数据量较大的表,需要修改表结构,或者做一些耗时比较久的锁表操作,建议在晚上(业务闲时)执行。这个时候可以配合使用任务处理一下。
如:修改一个表的字段长度,和添加索引
名词解释:
接着回家睡觉,第二天回来检查结果就好了。
附:添加唯一索引示例
MYSQL存储过程结合任务处理耗时操作
会锁,mysql锁表或锁行的情况是:
当主键或者唯一索引的效果时,是锁行。但是如果“重复率”高时,Mysql不会把这个普通索引当做索引,即会造成一个没有索引的SQL,从而形成锁表。
特别是在UPDATE、DELETE操作时,MySQL不仅锁定WHERE条件扫描过的所有索引记录,而且会锁定相邻的键值,即所谓的next-key locking。