随笔分类 - mysql学习总结
学习中一些要点记录
摘要:大前提:根据主键查询返回数据 select * from t innodb的数据是直接保存在主键索引上的,全表扫描实际上是扫描表t的主键索引。这条语句没有其他判断条件,所以查到的每一行可以直接放到结果集返回给客户端, 实际上,服务端并不需要保存一个完整的结果集,取数据和发数据的流程是这样的: 1.获
阅读全文
摘要:1、条件字段函数操作: 注意:如果对索引字段做了函数操作,可能会破坏索引值的有序性,优化器会放弃走树索引树查询 原因: select count(*) from tradelog where month(t_modified)=7; 由于B+树提供的快速定位能力,来源于同一层兄弟节点的有序性。当你使
阅读全文
摘要:myIsam引擎把一个表的总行数存在了磁盘上,因此执行count(*)会直接返回结果,效率很高 #但是myisam不支持事物 innodb引擎需要把数据一行行从引擎里读出来,然后计数累加。 innodb由于多版本并发控制机制,同一时刻不同回话拿到的结果可能都不相同,所以不能直接将总行数存储在磁盘上。
阅读全文
摘要:参数 innodb_file_per_table mysql5.6.6版本以后,默认设置为ON,表示innodb表数据存储在一个以.ibd为后缀的文件中 不建议设置为OFF,原因是 设置为OFF后,会将表数据存储在系统共享表空间中,即使drop掉表,空间也不会被回收【磁盘空间不会减少,只会无脑增加】
阅读全文
摘要:脏页:内存数据页跟磁盘上数据页内容不一致,将内存页称为脏页 干净页:内存数据写入磁盘后,内存页跟磁盘页数据一致,称内存页为干净页 刷脏页的俩种情况: 1、redo log满了,这时候系统不能再接受更新了,所有的更新都必须堵住,这时候的更新数为0 2、内纯不够用了,要先将脏页写到磁盘。这种情况是常态
阅读全文
摘要:一条sql执行的过程: 连接器 >分析器 >优化器 >执行器 >存储引擎 #如下图 不建议使用查询缓存的原因: 如果表有数据更新的话,这张表的缓存都会被清空 redo log日志(重做日志): 特性: innodb的引擎层日志,redo log日志大小时固定的(可通过参数设置),可配置日志个数,可重
阅读全文
摘要:优化器选择索引的逻辑: 找到一个最优的执行方案,用最小的代价去执行语句。在数据库里,扫描行数是影响执行代价的因素之一,扫描行数越少,意味着访问磁盘的次数越少,消耗CPU资源越少。当然,是否生成临时表、是否排序等因素也会影响优化器选择索引。 索引选择异常和处理: 1.使用 force index 强行
阅读全文
摘要:##innodb引擎的数据是按页为单位的,当需要读一条记录时,并不是将这个记录本身从磁盘中读取出来,而是以页为单位将整个页读取到内存中,每个页默认大小为16kb 数据查询过程: 磁盘 >内存 >返回结果 数据更新过程: change buffer >当有查询,更新到磁盘 >内存 >返回结果 ###这
阅读全文
摘要:覆盖索引: [t表中 card为普通索引,id为自增主键]select * from t where card=111 select id from t where card=222 第一个sql中,通过索引card检索到card=111后需要回表到主键将整行数据取出来 第二个sql中,由于id为自
阅读全文
摘要:索引的作用:提高查询效率,类似一本书的目录,可以让我们快速找到需要的内容。 索引的常见模型: 最多用到的三种,哈希表、有序数组、搜索树 哈希表:以key-value形式存储数据,将key通过内部函数计算得到一个值,放置于一个确定的位置,再将value放在数组的这个位置。由于多个key经过哈希函数计算
阅读全文
摘要:[mysqld] character_set_server=utf8 #default-character-set=utf8 #init_connect='SET NAMES utf8' #慢日志时间 long_query_time=1 #开启慢日志 slow_query_log=TRUE #慢日志位置 slow_query_log_file=/mydata/mysql-5.7.20/...
阅读全文
摘要:常用的基准测试工具介绍: mysql基准测试工具: mysqlslap,mysql自带的工具,对于性能测试不建议使用 特点: 可以模拟服务器负载,并输出相关统计信息 可以指定也可以自动生成查询语句 常用参数说明: mysql基准测试工具: sysbench 对系统资源性能测试支持,推介使用,通用的测
阅读全文
摘要:mysql服务器参数: 配置是从上往下读取,同一个参数项,后边的配置项会覆盖前边的配置项 mysql获取配置信息路径: 命令行参数 mysqld_safe --datadir=/data/sql_data 配置文件 centos默认读取/etc/my.cnf默认读取配置文件顺序: [root@loc
阅读全文
摘要:Innodb引擎用表空间进行数据存储: innodb_file_per_table ON:独立表空间:tablename.ibd (mysql5.6后版本为默认配置) .frm文件是记录数据表结构的文件,.ibd文件是innodb实际存储数据的文件 OFF:系统表空间:ibddataX .frm i
阅读全文

浙公网安备 33010602011771号