抛开复杂的架构设计,MySQL优化思想基本都在这了
副问题[/!--empirenews.page--]
数据库优化一方面是找出体系的瓶颈,进步MySQL数据库的整体机能,而另一方面必要公道的布局计划和参数调解,以进步用户的响应速率,同时还要尽也许的节省体系资源,以便让体系提供更大的负荷。 一、优化一览图 二、优化 笔者将优化分为了两大类:软优化和硬优化。软优化一样平常是操纵数据库即可;而硬优化则是操纵处事器硬件及参数配置。 1、软优化 1)查询语句优化 起首我们可以用EXPLAIN或DESCRIBE(简写:DESC)呼吁说明一条查询语句的执行信息。 例:
表现: 个中会表现索引和查询数据读取数据条数等信息。 2)优化子查询 在MySQL中,只管行使JOIN来取代子查询。由于子查询必要嵌套查询,嵌套查询时会成立一张姑且表,姑且表的成立和删除城市有较大的体系开销,而毗连查询不会建设姑且表,因此服从比嵌套子查询高。 3)行使索引 索引是进步数据库查询速率最重要的要领之一,行使索引的三大留意事项包罗:
4)解析表 对付字段较多的表,假如某些字段行使频率较低,此时该当将其疏散出来从而形成新的表。 5)中间表 对付将大量毗连查询的表可以建设中间表,从而镌汰在查询时造成的毗连耗时。 6)增进冗余字段 相同于建设中间表,增进冗余也是为了镌汰毗连查询。 7)说明表、搜查表、优化表 说明表首要是说明表中要害字的漫衍;搜查表首要是搜查表中是否存在错误;优化表首要是消除删除或更新造成的表空间挥霍。 说明表:行使 ANALYZE 要害字,如ANALYZE TABLE user
搜查表: 行使 CHECK要害字,如CHECK TABLE user [option]。option 只对MyISAM有用。共五个参数值:
优化表:行使OPTIMIZE要害字,如OPTIMIZE [LOCAL|NO_WRITE_TO_BINLOG] TABLE user; LOCAL|NO_WRITE_TO_BINLOG都是暗示不写入日记,优化表只对VARCHAR、BLOB和TEXT有用,通过OPTIMIZE TABLE语句可以消除文件碎片,在执行进程中会加上只读锁。 2、硬优化 1)硬件三件套 设置多焦点和频率高的cpu,多焦点可以执行多个线程; 设置大内存,进步内存,即可进步缓存区容量,因此能镌汰磁盘I/O时刻,从而进步相应速率; 设置高速磁盘或公道漫衍磁盘:高速磁盘进步I/O,漫衍磁盘能进步并行操纵的手段。 2)优化数据库参数 优化数据库参数可以进步资源操作率,从而进步MySQL处事器机能。MySQL处事的设置参数都在my.cnf或my.ini,下面列出机能影响较大的几个参数:
更多参数: https://www.mysql.com/cn/why-mysql/performance/index.html 3)分库分表 由于数据库压力过大,起首一个题目就是岑岭期体系机能也许会低落,由于数据库负载过高对机能会有影响。 其它一个,压力过大把你的数据库给搞挂了怎么办? 以是此时你必需得对体系做分库分表+读写疏散,也就是把一个库拆分为多个库,陈设在多个数据库处事上,这时作为主库承载写入哀求。然后每个主库都挂载至少一个从库,由从库来承载读哀求。 4)缓存集群 假如用户量越来越大,此时你可以不断的加呆板,好比说体系层面不断加呆板,就可以承载更高的并发哀求。 然后数据库层面假如写入并发越来越高,就扩容加数据库处事器,通过度库分表是可以支持扩容呆板的,假如数据库层面的读并发越来越高,就扩容加更多的从库。 可是这里有一个很大的题目: 数据库着实自己不是用来承载高并发哀求的,以是凡是来说,数据库单机每秒承载的并发就在几千的数目级,并且数据库行使的呆板都是较量高设置,较量昂贵的呆板,本钱很高。 假如你就是简朴的不断的加呆板,着实是差池的。 以是在高并发架构里凡是都有缓存这个环节,缓存体系的计划就是为了承载高并发而生。单机承载的并发量都在每秒几万,乃至每秒数十万,对高并发的承载手段比数据库体系要跨越一到两个数目级。 你完全可以按照体系的营业特征,对那种写少读多的哀求,引入缓存集群。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |