在可扩展性方面,客户的要求变得越来越多,功能列表上经常会出现20条、50条甚至多达100多条要求,但总的来说,我们可以把它们缩短为五个大类,通过五条途径来解决可扩展性问题: 1. 调整查询操作 对查询进行优化能够让你付出最少的精力就得到最多的成果。将
在可扩展性方面,客户的要求变得越来越多,功能列表上经常会出现20条、50条甚至多达100多条要求,但总的来说,我们可以把它们缩短为五个大类,通过五条途径来解决可扩展性问题:
1. 调整查询操作
对查询进行优化能够让你付出最少的精力就得到最多的成果。将查询功能完善的发挥出来,达到业务需求,不会被过多的流量和过重的载荷压倒。这就是为什么我们经常看见客户碰到的麻烦越来越多,随着他们网站的访问量越来越大,可扩展性的挑战也变得越来越严重,这就是问题的所在。对网站角落里那些不常用的页面做查询优化是并不必要的,那些页面并不会收到真实世界的流量。根据反映对网络应用做一定的调整是很普遍的做法,而且效果很好。
查询优化需要启用缓慢查询日志并且不断观察。使用mk-query-digest这个Maatkit套件中的强大工具来分析日志,而且要确定设置了log_queries_not_using_indexes。一旦你发现某个查询严重占用资源,那就要优化它。使用EXPLAIN解释机制,使用profiler,观察索引的使用情况,创建失踪的索引,理解它是怎么进行添加和排序的。
2.使用Master-Master复制
Master-Master的active-passive复制模式,或者称为循环复制,不仅能带来高可用性,也能够带来高度的可扩展性。这是因为你能够即刻给你的应用分配到一块只读的从属盘。许多网络应用都按照80/20的规律来分割,80%的活动用来进行读取或SELECT,剩下的分配给INSERT和UPDATE。配置你的应用或者进行重新架构,把读取需要的流量发送到从盘,这样做是可行的,这种类型的横向可扩展能力可以进一步延伸,在必要时能够附加更多块只读从盘。
3. 使用存储
这听起来是很基础的东西,也很直接,但是经常会被忽视,你至少应该确认设置了这些:
- innodb_buffer_pool_size
- key_buffer_size (MyISAM索引缓存)
- query_cache_size – 使用大型SMP时需要小心
- thread_cache & table_cache
- innodb_log_file_size & innodb_log_buffer_size
- sort_buffer_size, join_buffer_size, read_buffer_size, read_rnd_buffer_size
- tmp_table_size & max_heap_table_size
4. 磁盘读取的RAID
你的数据库下面是什么?不知道吗,请找出来。你是在用RAID 5吗?这对于性能来说可是一个巨大的阻碍。RAID5的插入和更新操作速度很慢,而且如果你丢失了一块硬盘,RAID 5在重建时几乎无能为力。RAID 5实在是太慢了,那么应该用什么代替它呢?用RAID 10做镜像和分段,这就可以充分利用你的服务器或机箱里的所有硬盘了。即使你的内存能够容纳下整个数据库,依然需要对硬盘进行许多读取操作。为什么呢?因为比如排序操作需要重新安排行列,群组和联接等等也一样,还有添加交易日志等等这些都是磁盘I/O操作。
5. 调整Key参数
另外,有些附加的参数也可以用来提高性能:
innodb_flush_log_at_trx_commit=2
它可以极大的提升insert和update的速度,只是在清除innodb日志缓冲区时有点偷懒。你可以对它多做些研究,但大多数情况下是非常值得推荐的。
innodb_file_per_table
innodb开发就像Oracle,存储方面使用的是tablespace模式。显然内核开发者们做的并不完善,因为使用单独tablespace的默认设置就会出现性能瓶颈。这个参数设置可以帮助innodb为每个表创建tablespace和数据文件,就像MyISAM所做的一样。
文章出自:Dzone
译文出自:PHPchina
(责任编辑:夏梦竹)

对比SpringBoot与SpringMVC,了解它们的差异随着Java开发的不断发展,Spring框架已经成为了许多开发人员和企业的首选。在Spring的生态系统中,SpringBoot和SpringMVC是两个非常重要的组件。虽然它们都是基于Spring框架的,但在功能和使用方式上却有一些区别。本文将重点对比一下SpringBoot与Sprin

WordPress网站搭建指南:快速搭建个人网站随着数字化时代的到来,拥有一个个人网站已经成为了一种时尚和必要。而WordPress作为最受欢迎的网站搭建工具,让搭建个人网站变得更加容易和便捷。本文将为大家提供一个快速搭建个人网站的指南,包含具体的代码示例,希望可以帮助到想要拥有自己网站的朋友们。第一步:购买域名和主机在开始搭建个人网站之前,首先要购买自己

Vue3是目前前端界最热门的框架之一,而Vue3的生命周期函数是Vue3中非常重要的一部分。Vue3的生命周期函数可以让我们实现在特定的时机触发特定的事件,增强了组件的高度可控性。本文将从Vue3的生命周期函数的基本概念、各个生命周期函数的作用和使用方法以及实现案例等方面进行详细探究和讲解,帮助读者快速掌握Vue3的生命周期函数。一、Vue3的生命周期函数的

电脑怎么切屏?在使用电脑的时候,有的朋友会使用两个甚至三个显示屏,但是在使用的时候,就会遇到需要切换屏幕的问题,那么电脑怎么切屏呢?一些朋友不知道电脑快速切屏方法,所以本期将教大家win10电脑怎么快速切屏。win10电脑怎么快速切屏?具体的方法如下:1、外接显示屏以后,同时按下【Fn】+【F4】或者【win】+【P】即可选择外接显示器。2、第二种方法是,在桌面空白处鼠标右键,然后选择【屏幕分辨率】。3、然后在【多显示器】中,就能够切换屏幕了。以上就是小编带来的win10电脑怎么快速切屏的全部内

sessionStorage在前端开发中的优势与应用案例分析随着Web应用的发展,前端开发的需求也越来越多样化。前端开发人员需要使用各种工具和技术来提高用户体验,其中,sessionStorage是一个非常有用的工具。本文将介绍sessionStorage在前端开发中的优势,以及几个具体的应用案例。sessionStorage是HTML5提供的一种本地存储方

win7如何快速截屏?win7系统之中有着很多便捷操作功能,可以为各位提供非常多样化的便捷服务。很多win7系统的用户在使用电脑的过程中,想要通过win7系统之中的快捷键进行截屏,但是却不清楚具体的快捷键是哪些,因此无法正常使用,那么,这些快捷截屏键究竟是哪些呢?下面小编就为各位带来win7快速截屏键介绍。win7快速截屏键介绍1、按Prtsc键截图这样获取的是整个电脑屏幕的内容,按Prtsc键后,可以直接打开画图工具,接粘贴使用。也可以粘贴在QQ聊天框或者Word文档中,之后再选择保存即可。2

效率提升!PyCharm中快速注释代码的方法分享在日常的软件开发工作中,我们经常需要注释掉一部分代码进行调试或者调整。如果手动逐行添加注释,这无疑会增加我们的工作量和耗费时间。而PyCharm作为一款强大的Python集成开发环境,提供了快速注释代码的功能,大大提升了我们的开发效率。本文将分享一些在PyCharm中快速注释代码的方法,并提供具体的代码示例。单

VUE3初学者必备的快速开发入门指南Vue是一款流行的JavaScript框架,它的易用性、高度定制性和快速开发模式使得它在前端开发中广受欢迎。而最新的Vue3则推出了更多强大的特性,包括性能优化、TypeScript支持、CompositionAPI以及更好的自定义渲染器等等。本篇文章将为Vue3初学者提供一份快速开发入门指南,帮助你快速上手Vue3开发


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

EditPlus Chinese cracked version
Small size, syntax highlighting, does not support code prompt function

Dreamweaver Mac version
Visual web development tools

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

SublimeText3 Mac version
God-level code editing software (SublimeText3)

mPDF
mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),
