教你五招,快速提升MySQL可扩展性

原创
数据库 MySQL 新闻
在可扩展性方面,客户的要求变得越来越多,功能列表上经常会出现20条、50条甚至多达100多条要求,但总的来说,我们可以把它们缩短为五个大类,通过五条途径来解决可扩展性问题。

在可扩展性方面,客户的要求变得越来越多,功能列表上经常会出现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所做的一样。

原文地址:http://sql.dzone.com/news/5-ways-boost-mysql-scalability

【编辑推荐】

  1. 教你如何利用MySQL学习MongoDB
  2. Craigslist采用MongoDB替代MySQL
  3. MySQL中的NoSQL插件
  4. SQL与NoSQL——MySQL与NoSQL的融合
责任编辑:艾婧 来源: 51CTO
相关推荐

2023-10-11 13:46:26

缓存Web应用程序

2021-09-02 09:42:11

测试软件可扩展性开发

2024-08-06 08:00:00

SQL Query数据库

2015-05-13 17:15:01

Elasticsear分布式搜索插件

2012-06-04 11:04:46

虚拟化

2022-09-05 15:17:34

区块链比特币可扩展性

2015-05-29 17:00:48

XY

2013-12-31 09:13:18

数据中心可扩展性技术

2021-12-03 14:41:00

云存储可扩展性存储

2010-02-26 15:07:20

WCF单例服务

2024-10-10 14:01:34

2011-09-20 09:34:09

Windows Ser微软虚拟化

2021-12-09 05:36:16

云存储可扩展性数据存储云存储

2021-05-17 07:28:23

Spring可扩展性项目

2016-10-13 14:38:51

OpenStack可扩展性IT人员

2014-05-29 09:54:14

极进网络802.11ac

2010-01-20 11:09:18

虚拟服务器安全

2023-05-17 15:53:21

2009-04-20 11:33:47

光网络动态扩展

2017-01-05 19:29:10

公共云云存储微软
点赞
收藏

51CTO技术栈公众号