电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

一文帶你了解MySQL中的鎖機制

瀏覽:125日期:2023-02-18 16:43:52
目錄
  • 一.概述
    • 分類
  • 二.MyISAM表鎖
    • 如何加表鎖
    • 寫鎖演示
  • 三.InnoDB行鎖
    • 行鎖特點

一.概述

鎖是計算機協調多個進程或線程并發訪問某一資源的機制(避免爭搶)。

在數據庫中,除傳統的計算資源(如CPU、RAM、I/O等)的爭用以外,數據也是一種供許多用戶共享的資如何保證數據并發訪問的一致性、有效性是所有數據庫必須解決的一個問題,鎖沖突也是影響數據庫并發訪問性能的一個重要因素。從這個角度來說,鎖對數據庫而言顯得尤其重要,也更加復雜。

分類

1、從對數據操作的粒度分

  • 表鎖:操作時,會鎖定整個表。
  • 行鎖:操作時,會鎖定當前操作行。

2、從對數據操作的類型分

  • 讀鎖(共享鎖):針對同一份數據,多個讀操作可以同時進行而不會互相影響。
  • 寫鎖(排它鎖):當前操作沒有完成之前,它會阻斷其他寫鎖和讀鎖。

相對其他數據庫而言,MySQL的鎖機制比較簡單,其最顯著的特點是不同的存儲引擎支持不同的鎖機制。下表中羅列出了各存儲引擎對鎖的支持情況:

存儲引擎表級鎖行級鎖MylSAM支持不支持lnnoDB支持支持MEMORY支持不支持BDB支持不支持

MySQL鎖的特性可大致歸納如下:

鎖類型特點表級鎖偏向MyISAM存儲引擎,開銷小,加鎖快;不會出現死鎖;鎖定粒度大,發生鎖沖突的概率最高,并發度最低。行級鎖偏向InnoDB存儲引擎,開銷大,加鎖慢;會出現死鎖;鎖定粒度最小,發生鎖沖突的概率最低,并發度也最高。

從上述特點可見,很難籠統地說哪種鎖更好,只能就具體應用的特點來說哪種鎖更合適! 僅從鎖的角度來說:表級鎖更適合于以查詢為主,只有少量按索引條件更新數據的應用,如web應用;

而行級鎖則更適合于有大量按索引條件并發更新少量不同數據,同時又有并查詢的應用,如一些在線事務處理(OLTP)系統。

二.MyISAM表鎖

MylSAM存儲引擎只支持表鎖

如何加表鎖

MylSAM在執行查詢語句(SELECT)前,會自動給涉及的所有表加讀鎖,在執行更新操作(UPDATE、DELETE、INSERT等)前,會自動給涉及的表加寫鎖,這個過程并不需要用戶干預,因此,用戶一般不需要直接用LOCK TABLE命令給MylSAM表顯式加鎖。

讀鎖演示

create database test_lock;use test_lock; drop table tb_book ; create table tb_book(	id int(11) auto_increment,	name varchar(50) default null,	publish_time date default null,	status char(1) default null,	primary key (id))engine=myisam default charset=utf8; insert into tb_book values(null,"sql","2088-08-01","1");insert into tb_book values(null,"sql",20880908,"0");  create table tb_user(	id int(11) auto_increment,	name varchar(50) default null,	primary key (id)	)engine =myisam default charset=utf8; insert into tb_user values(null,"張三");insert into tb_user values(null,"李四"); -- 加讀鎖lock table tb_book read; select * from tb_book  ;-- 能正常輸出select * from tb_book tb ;-- 不能正常輸出,不能有別名update tb_book set status=1;-- 不能正常輸出 讀鎖:可讀不可改 select * from tb_user ;-- 不能正常輸出,當鎖住一個表時也不能看其他表-- 解鎖unlock tables;

加了讀鎖后只能看自己的表,不能修改,也不能看其他的表

寫鎖演示

create table tb_book(	id int(11) auto_increment,	name varchar(50) default null,	publish_time date default null,	status char(1) default null,	primary key (id))engine=myisam default charset=utf8; insert into tb_book values(null,"sql","2088-08-01","1");insert into tb_book values(null,"sql",20880908,"0");  create table tb_user(	id int(11) auto_increment,	name varchar(50) default null,	primary key (id)	)engine =myisam default charset=utf8; insert into tb_user values(null,"張三");insert into tb_user values(null,"李四"); -- 加寫鎖lock table tb_book write; select * from tb_book  ;-- 能正常輸出select * from tb_book tb ;-- 不能正常輸出,不能有別名update tb_book set status=1;-- 可以修改 寫鎖:可讀可修改,但在沒有解鎖之前不能被其他人查看,會被掛起 select * from tb_user ;-- 不能正常輸出,當鎖住一個表時也不能看其他表-- 解鎖unlock tables;

三.InnoDB行鎖

行鎖特點

行鎖特點︰偏向InnoDB存儲引擎,開銷大,加鎖慢;會出現死鎖;鎖定粒度最小,發生鎖沖突的概率最低,并發度也最高。

InnoDB與 MylSAM的最大不同有兩點:一是支持事務;二是采用了行級鎖。

行鎖模式

lnnoDB實現了以下兩種類型的行鎖。

1、共享鎖(S)∶又稱為讀鎖,簡稱s鎖,共享鎖就是多個事務對于同一數據可以共享一把鎖,都能訪問到數據,但是只能讀不能修改。

2、排他鎖(x):又稱為寫鎖,簡稱x鎖,排他鎖就是不能與其他鎖并存,如一個事務獲取了一個數據行的排他鎖,其他事務就不能再獲取該行的其他鎖,包括共享鎖和排他鎖,但是獲取排他鎖的事務是可以對數據就行讀取和修改。

對于UPDATE、DELETE和INSERT語句,InnoDB會自動給涉及數據集加排他鎖(x);

對于普通SELECT語句,InnoDB不會加任何鎖;

可以通過以下語句顯示給記錄集加共享鎖或排他鎖。

-- 行鎖 drop table is exists test_innodb_lock;create table test_innodb_lock(	id int(11),	name varchar(16),	sex varchar(1))engine=innodb; insert into test_innodb_lock values(1,"100","1"),									(2,"200","0"),									(3,"200","1"),									(4,"300","0"),									(5,"400","0"),									(6,"500","1"),									(7,"600","1"),									(1,"700","1"); create index index_id on test_innodb_lock(id);create index index_name on test_innodb_lock(name);

可以修改是因為上面的行鎖只對id=1的那兩行加了排他鎖

到此這篇關于一文帶你了解MySQL中的鎖機制的文章就介紹到這了,更多相關MySQL鎖機制內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

標簽: MySQL
主站蜘蛛池模板: 安徽合肥项目申报咨询公司_安徽合肥高新企业项目申报_安徽省科技项目申报代理 | 耐酸碱胶管_耐腐蚀软管总成_化学品输送软管_漯河利通液压科技耐油耐磨喷砂软管|耐腐蚀化学软管 | 水质监测站_水质在线分析仪_水质自动监测系统_多参数水质在线监测仪_水质传感器-山东万象环境科技有限公司 | H型钢切割机,相贯线切割机,数控钻床,数控平面钻,钢结构设备,槽钢切割机,角钢切割机,翻转机,拼焊矫一体机 | 武汉高低温试验机-现货恒温恒湿试验箱-高低温湿热交变箱价格-湖北高天试验设备 | 西门子代理商_西门子变频器总代理-翰粤百科 | 铝机箱_铝外壳加工_铝外壳厂家_CNC散热器加工-惠州市铂源五金制品有限公司 | 建筑资质代办-建筑资质转让找上海国信启航 | 保定市泰宏机械制造厂-河北铸件厂-铸造厂-铸件加工-河北大件加工 | 水性漆|墙面漆|木器家具漆|水漆涂料_晨阳水漆官网 | 红外光谱仪维修_二手红外光谱仪_红外压片机_红外附件-天津博精仪器 | 碳纤维复合材料制品生产定制工厂订制厂家-凯夫拉凯芙拉碳纤维手机壳套-碳纤维雪茄盒外壳套-深圳市润大世纪新材料科技有限公司 | 高效复合碳源-多核碳源生产厂家-污水处理反硝化菌种一长隆科技库巴鲁 | 苏州西朗门业-欧盟CE|莱茵UL双认证的快速卷帘门品牌厂家 | 恒温恒湿试验箱厂家-高低温试验箱维修价格_东莞环仪仪器_东莞环仪仪器 | 沈阳缠绕包装机厂家直销-沈阳海鹞托盘缠绕包装机价格 | 洗地机_全自动洗地机_手推式洗地机【上海滢皓环保】 | 排烟防火阀-消防排烟风机-正压送风口-厂家-价格-哪家好-德州鑫港旺通风设备有限公司 | CCE素质教育博览会 | CCE素博会 | 教育展 | 美育展 | 科教展 | 素质教育展 | 警用|治安|保安|不锈钢岗亭-售货亭价格-垃圾分类亭-移动厕所厂家-苏州灿宇建材 | 右手官网|右手工业设计|外观设计公司|工业设计公司|产品创新设计|医疗产品结构设计|EMC产品结构设计 | 啤酒设备-小型啤酒设备-啤酒厂设备-济南中酿机械设备有限公司 | 等离子表面处理机-等离子表面活化机-真空等离子清洗机-深圳市东信高科自动化设备有限公司 | 雷冲击高压发生器-水内冷直流高压发生器-串联谐振分压器-武汉特高压电力科技有限公司 | 烟台螺纹,烟台H型钢,烟台钢材,烟台角钢-烟台市正丰金属材料有限公司 | 威廉希尔WilliamHill·足球(中国)体育官方网站| 路斯特伺服驱动器维修,伦茨伺服驱动器维修|万骏自动化百科 | 智慧农业|农业物联网|现代农业物联网-托普云农物联网官方网站 | 运动木地板_体育木地板_篮球馆木地板_舞台木地板-实木运动地板厂家 | 杭州代理记账多少钱-注册公司代办-公司注销流程及费用-杭州福道财务管理咨询有限公司 | Eiafans.com_环评爱好者 环评网|环评论坛|环评报告公示网|竣工环保验收公示网|环保验收报告公示网|环保自主验收公示|环评公示网|环保公示网|注册环评工程师|环境影响评价|环评师|规划环评|环评报告|环评考试网|环评论坛 - Powered by Discuz! | 卫浴散热器,卫浴暖气片,卫生间背篓暖气片,华圣格浴室暖气片 | 华禹护栏|锌钢护栏_阳台护栏_护栏厂家-华禹专注阳台护栏、楼梯栏杆、百叶窗、空调架、基坑护栏、道路护栏等锌钢护栏产品的生产销售。 | 桥架-槽式电缆桥架-镀锌桥架-托盘式桥架 - 上海亮族电缆桥架制造有限公司 | 蚂蚁分类信息系统 - PHP同城分类信息系统 - MayiCMS | 液压油缸生产厂家-山东液压站-济南捷兴液压机电设备有限公司 | 欧美日韩国产一区二区三区不_久久久久国产精品无码不卡_亚洲欧洲美洲无码精品AV_精品一区美女视频_日韩黄色性爱一级视频_日本五十路人妻斩_国产99视频免费精品是看4_亚洲中文字幕无码一二三四区_国产小萍萍挤奶喷奶水_亚洲另类精品无码在线一区 | 肉嫩度仪-凝胶测试仪-国产质构仪-气味分析仪-上海保圣实业发展有限公司|总部 | 储能预警-储能消防系统-电池舱自动灭火装置-四川千页科技股份有限公司官网 | AGV无人叉车_激光叉车AGV_仓储AGV小车_AGV无人搬运车-南昌IKV机器人有限公司[官网] | 木材烘干机,木炭烘干机,纸管/佛香烘干设备-河南蓝天机械制造有限公司 |