MySQL技术内幕InnoDB存储引擎笔记_weixin_33943347的博客-程序员宅基地

技术标签: python  运维  数据库  

1.mysql配置文件的默认加载顺序
/etc/my.cnf  >  /etc/mysql/my.cnf  >  mysql安装目录/etc/my.cnf  >  ~/.my.cnf
后面读到的文件会覆盖前面的配置。
2.mysql参数修改
mysql参数分为静态参数和动态参数  在mysql运行中可以对动态参数进行修改
SET |[global|session] system_var_name = expr
SET |[@@global.|@@session.]system_var_name = expr
3.表
1)在innodb中,表都是根据主键顺序组织存放的,称为索引组织表。
2)分区表
a.range分区 行数据基于一个给定的连续区间的列值放入分区。
b.list分区 和range分区一样,只是list分区面向的是离散的值
c.hash分区 根据用户自定义表达式的返回值来进行分区,返回值不能为负数
d.key分区 根据MySQL数据库提供的散列函数进行分区
4.索引
1)InnoDB中常见的几种索引
B+树索引
全文索引
哈希索引
2)B+树索引
a.B+树索引 分为聚集索引和辅助索引
b.聚集索引是按照每张表的主键构造一颗B+树,同时叶子节点中存放的即为整张表的行记录数据
c.辅助索引 叶子节点除了包含键值外还包含一个书签,即相应行数据的聚集索引建。
通过辅助索引查找数据时,innodb引擎会遍历辅助索引 找到指向主键索引的主键(书签),然后查找主键索引查找到完整的行数据。
3)可以通过show index from tablename 来查看索引状况
4)通过Cardinality可以看到不重复数据的预估值
5)索引的使用
联合索引 是指对表上的多个列进行索引。
覆盖索引 可以从辅助索引中直接获取到要查询的数据,不需要再查询聚集索引。
索引提示 index hint,显示告诉优化器使用哪个索引。
eg:select * from t USE INDEX(a) where a=1 and b=2; 建议使用索引
select * from t FORCE INDEX(a) where a=1 and b=2; 强制使用索引
5.锁
1)InnoDB中锁的类型
共享锁(S)
排它锁(X)
意向共享锁(IS)
意向排它锁(IX)
由于InnoDB存储引擎支持的是行级锁,因此意向锁实际上不会阻塞除全表扫描外的任何请求。
2)非一致性锁定读
InnoDB通过多版本控制MVCC的方法来读取当前执行时间的数据。
即实际读取的是undo段中快照数据。
3)一致性锁定读
可以通过SELECT...FOR UPDATE来获取X锁
通过SELECT...LOCK IN SHARE MODE来获取S锁
4)行锁的3种算法
Record Lock:单个行记录上的锁 [a]
Gap Lock:间隙锁 包含下范围 不包括记录本身 (a,b)
Next-Key Lock 包含上范围 包含记录本身(c,a]
6.事物
1)ACID
原子性Atomicity
一致性Consistency
隔离性Isolation
持久性Durability
2)InnoDB支持扁平事务、带有保存点的事务、链事务、分布式事务。
3)事务日志
通过redo(重做日志)保证事务的原子性和持久性 
undo保证事务的一致性 实现MVCC和事务回滚
binlog用来进行POINT-IN-TIME的恢复和主从复制replication环境的建立。
4)隐式提交的SQL语句
a.DDL语句 alert create drop truncate
b.用户权限相关 create/rename/drop user、grant、revoke、set password
c.管理语句 ANALYZE TABLE、CACHE INDEX、CHECK TABLE、LOAD INDEX INTO CACHE、
OPTIMIZE TABLE、REPAIR TABLE.
5)分布式事务
使用分布式事务时、mysql的隔离级别必须设置为serializable。
XA事务通常有一个或多个资源管理器(数据库)、一个事务管理器和一个应用程序组成。
使用两阶段提交方式(2PC:Two-Phrase Commit)。
第一阶段所有节点都开始准备、告诉事务管理器事务等待提交。
第二阶段 事务管理器告诉资源管理器ROLLBACK或者COMMIT
7.其他
缓存命中率计算 
正常情况下命中率不能低于99%、命中率过低应该考虑内存不足问题。
Show global status like 'innodb%read%'\G;

Innodb_buffer_pool_reads: 表示从物理磁盘读取页的次数
Innodb_buffer_pool_read_ahead:预读的次数
Innodb_buffer_pool_read_ahead_evicted:预读的页,但是没有被读取就从缓冲池中被替换的页的数量,一般用来判断预读的效率。
Innodb_buffer_pool_read_requests:从缓冲池中读取页的次数。
Innodb_data_read:总共读入的字节数。
Innodb_data_reads:发起读取请求的次数,每次读取可能需要读取多少页。

缓冲池命中率=innodb_buffer_pool_read_requests/(innodb_buffer_pool_read_requests+innodb_buffer_pool_read_ahead+innodb_buffer_pool_reads)

平均每次读取的字节数=innodb_data_read/innodb_data reads;
 

转载于:https://my.oschina.net/dajianguo/blog/2876128

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33943347/article/details/92046652

智能推荐

ubuntu root开机自登录 与 ros 节点自启_ubuntu root自动登录systemd -a root_David_By的博客-程序员宅基地

ubuntu开机自动登录root - 简书ROS节点开机自启动 - 古月居_ubuntu root自动登录systemd -a root

计算机网络连接限制,网络连接受限,教您网络连接受限怎么解决_葛次之的博客-程序员宅基地

很多时候我们发现明明我们身边有无线网络,电脑也能够连接上,密码输入也没有出错,可是连接网络的图标上却出现感叹号标志,说明网络连接受限。怎么办?下面,小编就来跟大家介绍网络连接受限的解决技巧。新世纪的年轻人已经完全离不开电脑、手机、网络,手机还好,离开了无线网络还有流量但我们的电脑,没有无线网络,除非连接有线宽带,否则电脑将无用武之地。有用户遇到了网络连接受限的情况,下面,小编就来跟大家讲解网络连接..._网络访问权限怎么解除

APK安装器_2在路上的博客-程序员宅基地

项目空余期间,没事我用c#写了个PC端的APK安装器。市场上的APK安装器还是很多的,比较完善的像91这样的。我就按照91的样子仿了个安装器。91的安装器功能比较强大,可以识别手机,并且可以安装上相应厂家usb的驱动,这个功能我还没做出来。外观还有其余的功能仿的大差不差了。如下图: 总结一下写这个东西的障碍和我自己的解决方法:1.如何获取apk的信息_apk安装器

[bzoj1879][Sdoi2009]Bill的挑战_动态规划_状压dp_dianan0938的博客-程序员宅基地

Bill的挑战bzoj-1879 Sdoi-2009题目大意:注释:$1\le t \le 5$,$1\le m \le 15$,$1\le length \le 50$。想法:又是一个看数据范围想做法的题,我们想到状压dp。看了题解... ...网上给的状态是f[len][s]表示长度为len满足状态s的字符串个数。光看状态... ...可能算重啊?!...

服务器脱机18个文档正在打印,打印机提示脱机打印的解决方案.docx-程序员宅基地

打印机提示脱机打印的解决方案 故障现象:WinlO、Win8、Win7、WinXP等系统下,打印机提示脱机打印,无法正常使用。 解决方案:现象1: Win10系统下,打印机提示脱机打印解决步骤1、打开控制面板,可在电脑桌面左下角[开始]菜单上点击[鼠标右键],出现菜单时,点击[控 制面板];程序和功能(F)电项(O)事件査看器(V)系统(Y)设备管理器(M)网络连接(W)磁盘管理旳计算机管理(G)..._打印机显示脱机 队列中有11个文档

探讨通过Feign配合Hystrix进行调用时异常的处理_项目启动报错找不到com.netflix.hystrix.exception.hystrixbadr_weixin_42073629的博客-程序员宅基地

前言此文所述处理方式为本人在实践过程中研究分析得出的一种解决方案。 本文不仅希望能为 SC 学习者提供一种如题问题的一种解决方案,并且希望通过本文引出各位 SC 的朋友对如题问题的共同探讨和最佳实践方案的分享。场景及痛点单个项目是通过 Jersey 来实现 restful 风格的架构 发生异常时异常信息总是提示没有回调方法,不能显示基础服务抛出的异常信息 暂时没有考虑发生异常之后进行回调返回特定内容 业务系统通过 feign 调用基础服务,基础服务是会根据请求抛出各种请求异常的(采用标准h_项目启动报错找不到com.netflix.hystrix.exception.hystrixbadrequestexception的

随便推点

TCP选项:TCP_NODELAY和TCP_CORK_JoeBlackzqq的博客-程序员宅基地

From: http://blog.163.com/zhangjie_0303/blog/static/990827062012718316231/ Nagle算法 TCP_NODELAY和TCP_CORKNagle算法根据创建者John Nagle命名。该算法用于对缓冲区内的一定数量的消息进行自动连接。该处理过程(称为Nagling),通过减少必须发送的封包的数量,提高了

Oracle Spatial 12C GeoRaster导入影像栅格数据并显示_oracle数据添加栅格数据_续汉冕的博客-程序员宅基地

看了几天Oracle的英文文档都要吐了,网上资源也少得出奇,总算是皇天不负有心人,至少结果还是出来了。环境:windows 7 64位,Oracle 12.0.1.2.0(下载地址),GEORASTERETL工具(下载地址),GEORASTERVIEWER(下载地址) 我的安装顺序:Oracle 12.0.1.2.0->GEORASTERETL工具->GEORASTERVIEWER; Or_oracle数据添加栅格数据

黑科技偏门实用的js方法总结_js 偏门方法_大吕十六 不见长安的博客-程序员宅基地

黑科技偏门实用的js方法总结一、contains是什么?总结一、contains是什么?使用场景:自定义一个组件,监听每一次点击事件,如果点击到组件以外的区域,则组件隐藏——类似于dialog弹窗的效果原理:每一次点击,都会有捕获和冒泡的阶段,捕获是从html元素向下到点击元素,冒泡阶段是从点击元素向上到html,在这过程中是否有需要的组件dom使用语法://意思判断B中是否包含AB.contains(A)总结good afternoon..._js 偏门方法

黑马程序员------Foundation框架------NSString类的操作_haze921的博客-程序员宅基地

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------1.NSString类的操作使用NSString类的对象初始化方法创建字符串   // 创建无参数的字符串 NSString *str2 = [[NSString alloc] initWithString:@"Jack"]; // 创建带参

PCA9685版OTTO开源跳舞机器人_otto机器人-程序员宅基地

PCA9685版OTTO开源跳舞机器人正文关于OTTO开源跳舞机器人PCA9685库文件Oscillater.cpp文件:Oscillator.h文件主程序:nanoPca9685ODance.ino参考文献当初急用但直接在网上翻遍了也没找到PCA9685版的OTTO机器人,库是从M5stack找的。直接上全部源代码和当初的参考文献吧。需要请自取。源代码网盘下载地址提取码:8z71正文https://www.ottodiy.com/Otto 机器人的官网。下面的图是官网截图。这个可爱的小家伙是一_otto机器人

推荐文章

热门文章

相关标签