一文总结高并发大数据量下MySQL开发规范「军规」

一文总结高并发大数据量下MySQL开发规范「军规」,第1张

在互联网公司中,MySQL是使用最多的数据库,那么在并发量大、数据量大的互联网业务中,如果高效的使用MySQL才能保证服务的稳定呢?根据本人多年运维管理经验的总结,梳理了一些核心的开发规范,希望能给大家带来一些帮助。

一、基础规范

二、库表设计

问题:使用VARCHAR(5) 和VARCHAR(200) 存储’hello’的磁盘空间开销是一样的,使用更短的列表有什么优势吗?

更大的定义列会消耗更多的内存,因为MySQL通常会分配固定大小的内存块来保存内部值,尤其是使用内存临时表进行排序或 *** 作时会特别糟糕

三、索引设计

基本规则:索引不是越多越好,能不添加的索引尽量不要添加,过多的索引会严重降低数据插入和更新的效率,并带来更多的读写冲突和死锁!

示例:假设在表tab中id建立了索引

四、SQL优化

示例:

字段: code varchar(50) NOT NULL COMENT ‘编码’ #code上建立了索引

SELECT id,name,addr from tab_name where code=10001不会使用索引

SELECT id,name,addr from tab_name where code='10001'会使用索引

Select * from table limit 10000,10;

LIMIT原理:

Limit 10000,10 偏移量越大则越慢

Select * from table WHERE id>=23423 limit 11#10+1 (每页10条)

Select * from table WHERE id>=23434 limit 11

Select * from table WHERE id >= ( select id from table limit 10000,1 ) limit 10

Select * from table INNER JOIN (SELECT id from table limit 10000,10) USING(id)

最后说明:

上述规范是多年MySQL数据库使用的经验总结,希望能给大家带来一些启发和帮助!

我们都知道,服务器数据库的开发一般都是通过java或者是PHP语言来编程实现的,而为了提高我们数据库的运行速度和效率,数据库优化也成为了我们每日的工作重点,今天,昌平IT培训http://www.kmbdqn.cn/就一起来了解一下mysql服务器数据库的优化方法。

为什么要了解索引真实案例案例一:大学有段时间学习爬虫,爬取了知乎300w用户答题数据,存储到mysql数据中。

那时不了解索引,一条简单的“根据用户名搜索全部回答的sql“需要执行半分钟左右,完全满足不了正常的使用。

案例二:近线上应用的数据库频频出现多条慢sql风险提示,而工作以来,对数据库优化方面所知甚少。

例如一个用户数据页面需要执行很多次数据库查询,性能很慢,通过增加超时时间勉强可以访问,但是性能上需要优化。

索引的优点合适的索引,可以大大减小mysql服务器扫描的数据量,避免内存排序和临时表,提高应用程序的查询性能。

索引的类型mysql数据中有多种索引类型,primarykey,unique,normal,但底层存储的数据结构都是BTREE有些存储引擎还提供hash索引,全文索引。

BTREE是常见的优化要面对的索引结构,都是基于BTREE的讨论。

B-TREE查询数据简单暴力的方式是遍历所有记录如果数据不重复,就可以通过组织成一颗排序二叉树,通过二分查找算法来查询,大大提高查询性能。

而BTREE是一种更强大的排序树,支持多个分支,高度更低,数据的插入、删除、更新更快。

现代数据库的索引文件和文件系统的文件块都被组织成BTREE。

btree的每个节点都包含有key,data和只想子节点指针。

btree有度的概念d>=1。

假设btree的度为d,则每个内部节点可以有n=[d+1,2d+1)个key,n+1个子节点指针。

树的大高度为h=Logb[(N+1)/2]。

索引和文件系统中,B-TREE的节点常设计成接近一个内存页大小(也是磁盘扇区大小),且树的度非常大。

这样磁盘I/O的次数,就等于树的高度h。

假设b=100,一百万个节点的树,h将只有3层。

即,只有3次磁盘I/O就可以查找完毕,性能非常高。

索引查询建立索引后,合适的查询语句才能大发挥索引的优势。

另外,由于查询优化器可以解析客户端的sql语句,会调整sql的查询语句的条件顺序去匹配合适的索引。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9684513.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存