专注于沈阳网站建设、沈阳网站制作、沈阳网页设计等网络服务
网站首页 关于我们 新闻中心 软件开发 网站建设 小程序开发 公众号开发 成功案例 联系我们
您所在的位置:网站首页 > 新闻中心
【Mysql中也有锁的机制】
来源:www.024linghang.com 发布者:沈阳小程序开发  发布时间:2020-01-12 
 相对其他数据库而言,MySQL的锁机制比较简单,其最 显著的特点是不同的存储引擎支持不同的锁机制。比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);BDB存储引擎采用的是页面锁(page-level locking),但也支持表级锁;InnoDB存储引擎既支持行级锁(row-level locking),也支持表级锁,但默认情况下是采用行级锁。 
表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 
行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 
页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般 

从上述特点可见,很难笼统地说哪种锁更好,只能就具体应用的特点来说哪种锁更合适!仅从锁的角度 来说:表级锁更适合于以查询为主,只有少量按索引条件更新数据的应用,如Web应用;而行级锁则更适合于有大量按索引条件并发更新少量不同数据,同时又有 并发查询的应用,如一些在线事务处理(OLTP)系统。

如果我们在mysql服务器配置文件中设置了thread_cache_size,当客户端断开之后,服务器处理此客户的线程将会缓存起来以响应下一个客户而不是销毁(前提是缓存数未达上限)。

threads_created表示创建过的线程数,如果发现threads_created值过大的话,表明mysql服务器一直在创建线程,这也是比较耗资源,可以适当增加配置文件中thread_cache_size值,

查询服务器 thread_cache_size 配置: 

mysql> show variables like ‘thread_cache_size‘;

+-------------------+-------+

| variable_name   | value   |

+-------------------+-------+

| thread_cache_size | 64   |

+-------------------+-------+ 

不需要记录每一行的变化,减少了binlog日志量,节约了IO,提高性能。(相比row能节约多少性能 与日志量,这个取决于应用的SQL情况,正常同一条记录修改或者插入row格式所产生的日志量还小于Statement产生的日志量,
但是考虑到如果带条 件的update操作,以及整表删除,alter表等操作,ROW格式会产生大量日志,因此在考虑是否使用ROW格式日志时应该跟据应用的实际情况,其所 产生的日志量会增加多少,以及带来的IO性能问题。)
缺点:由于记录的只是执行语句,为了这些语句能在slave上正确运行,因此还必须记录每条语句在执行的时候的 一些相关信息,以保证所有语句能在slave得到和在master端执行时候相同 的结果。另外mysql 的复制,
像一些特定函数功能,slave可与master上要保持一致会有很多相关问题(如sleep()函数, last_insert_id(),以及user-defined functions(udf)会出现问题).


 
下一篇: 分布式, 分布式重要的事情说两遍
 
推荐文章

分布式, 分布式重要的事情说两遍 [2020-01-11]
ftp软件在服务器中的用户配置 [2020-01-11]
微信小程序开发常用的案例大全 [2020-01-10]
提高网站建设的几大原则 [2020-01-10]
微信小程序开发中的常用布局形式 [2020-01-10]
nginx你懂吗? [2020-01-05]
 
公司地址:沈阳市沈河区北站路77-1号光达大厦C座1336层
领航科技 版权所有 联系电话:13840539193 024-31281857
Copyright @ 2005-2018 024linghang.com All Right Reserved
客服Q Q:2579047692
首页 | 关于我们 | 新闻中心 | 云主机 | 软件开发 | 网站建设 | 成功案例 | 联系我们