MySql慢查询如何解决
本篇内容介绍了“MySQL慢查询如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
公司主营业务:成都网站建设、网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出赤坎免费做网站回馈大家。
主键id,我们采用bigint,8字节
一条数据大小1KB
第一层
一个页16K,每一个索引键的大小8字节(bigint)+6字节(指针大小),因此第一层可存储16*1024/14=1170个索引键。查询Mysql的叶子可以存放多少数据,可以用sql: SHOW GLOBAL STATUS LIKE 'Innodb_page_size',大约是16k第二层
第二层只存储索引键,能存储多少个索引键呢?1170(这么多个页,有第一层延伸的指针)1170(每页的索引键个数,跟第一步计算一致)=1368900
如果第二层存储数据呢?1170(这么多个页,有第一层延伸的指针)16(16KB的页大小/1KB的数据大小)=18720,也就是能存储一万多条数。第三层
直接看三层能存储多少数据?1170*1170*16=21902400,是不是很强大,此处应该有掌声和鲜花,3次IO就可以查询到2千多万左右的数据,也就是这么大的数据量如果通过主键索引来查找是很快,这就是explain一个sql时,type=const为什么性能是最优的。
从上面我们可以看出,查出两千万左右的数据,我们需要了3次磁盘IO,如果采用其他的结构,很明显不是3次磁盘IO。
2. MyISAM 存储引擎介绍(非聚簇索引)
特点:索引文件和数据文件是分离的
缺陷:不支持事务和行级锁,而且有一个毫无疑问的缺陷就是崩溃后无法安全恢复。
它是表的存储引擎,例如如下创建表的语句,就指定的存储引擎,
CREATE TABLE `user` (
`id` INT(64) DEFAULT NULL
) ENGINE=MYISAM DEFAULT CHARSET=utf8
3. InnoDB 存储引擎介绍(聚簇索引)
特点:1. 表数据文件本身就是按B+ Tree组织的一个索引结构文件
2. 聚簇索引-叶节点包含完整的数据记录
下面有一个问题:
1. 为什么InnoDB表必须有主键,并且推荐使用整形的自增主键
InnoDB是通过主键聚集数据,如果没有定义主键,InnoDB会选择一个唯一的非空索引代替。如果没有这样的索引,InnoDB会隐式定义一个主键来作为聚簇索引。
使用自增主键,可以让二叉树分裂的时候,达到一个小平衡,效率更高。
“MySql慢查询如何解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!
当前题目:MySql慢查询如何解决
文章出自:http://scyanting.com/article/ppehco.html