暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
12谁最便宜就选谁 —— MySQL 基于成本的优化(02).pdf
205
39页
15次
2022-03-14
免费下载
标签 MySQL 是怎样运⾏的
什么
我们之前⽼说MySQL执⾏⼀个查询可以有不同的执⾏⽅案,它会选
其中成本最低,或者说代价最低的那种⽅案去真正的执⾏查询。不过
我们之前对成本的描述是⾮常模糊的,其实在MySQL中⼀条查询语
的执⾏成本是由下边这两个⽅⾯组成的:
I/O
我们的表经常使⽤MyISAMInnoDB存储引擎都是将数据和
索引都存储到磁盘上的,当我们想查询表中的记录时,需要
把数据或者索引加载到内存中然后再操作。这个从磁盘到内
这个加载的过程损耗的时间称之I/O成本
CPU
读取以及检测记录是否满⾜对应的搜索条件、对结果集进⾏
序等这些操作损耗的时间称之为CPU本。
对于InnoDB储引擎来说,⻚是磁盘和内存之间交互的基本单位
设计MySQL的⼤叔规定读取⼀个⻚⾯花费的成本默认1.0读取
及检测⼀条记录是否符合搜索条件的成本默认0.21.00.2
些数字称之为成本常数,这两个成本常数我们最常⽤到,其余的成本
常数我们后边再说哈。
⼩贴⼠:
需要注意的是,不管读取记录时需不需要检测是否满⾜搜索条件
其成本都算是0.2
单表的成
准备⼯作
为了故事的顺利发展,我们还得把之前⽤到的single_table表搬
来,怕⼤家忘了这个表⻓啥样,再给⼤家抄⼀遍:
CREATE TABLE single_table (
id INT NOT NULL AUTO_INCREMENT,
key1 VARCHAR(100),
key2 INT,
key3 VARCHAR(100),
key_part1 VARCHAR(100),
key_part2 VARCHAR(100),
key_part3 VARCHAR(100),
common_field VARCHAR(100),
PRIMARY KEY (id),
KEY idx_key1 (key1),
UNIQUE KEY idx_key2 (key2),
KEY idx_key3 (key3),
KEY idx_key_part(key_part1, key_part2,
key_part3)
) Engine=InnoDB CHARSET=utf8;
还是假设这个表⾥边⼉10000条记录,id列外其余的列都插
随机值。下边正式开始我们的表演。
基于成本的优步骤
of 39
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜