MySQL with Memcached 简介

在传统的环境下,访问信息的速度成为最大的可扩展性问题。为了频繁地访问信息,使用MySQL可能会变得很慢,原因是每一次数据访问,都必须请求执行SQL查询,以从数据库得到信息。这也意味着那些在某些时刻被锁住的或者正阻塞的表,可能延迟你的查询,或者降低了你获取信息的速度。

而memcached则是一个简单的,并且是高可扩展性的,基于key的缓存策略。我们可以用它在任何专用的或者剩余的RAM中存储数据以及对象,以加速程序对这些数据的访问速度。你可以运行memcached在一个甚至多个主机上,然后就可以使用共享的缓存来存储对象。因为,每一个主机的RAM都存储着信息,访问速度就会比从硬盘上加载来得快得多。它的性能比从本地数据库检索、加载数据有显著的提高。

也许只是因为这里的缓存只是一个信息“库”。你可以使用缓存来存储任何数据。包括可能需要大量地创建才能构建的复杂的结构。但在这种“ready-to-use”模式下,有助于减少你的MySQL服务器上的负载。

通常的使用环境是修改你的应用程序来让memcached提供的缓存,存储你需要读取的信息。如果信息不在memcached中,那么它将从MySQL数据库中被加载,然后被写入缓存,以便将来从缓存的数据中取出相同对象的便利。

图 1-1 memcached Architecture
Overview

在例子中的结构中,任意的客户端都能够连接到其中的一个memcached服务器来请求一个Key。插图中每一个客户端都可以连接到所有的服务器。对一个客户端来说,如果请求存储数据,那么这个用于引用数据的Key将被“哈希”做散列处理,然后用来选择其中的一个memcached服务器。在连接到服务器之前,对memcached服务器的选择将会在客户端发生,以此来保持处理的“轻量级”。

当一个客户端请求相同的Key时,相同的算法也将被再次使用。相同的Key通常产生相同的哈希值,并且也将选择相同的memcached服务器作为“数据源”。使用这种方式,被缓存的数据可以在所有的memcached服务器之间传播,并且被缓存的数据在任何的客户端都是可访问的。据此可以得出这样的结论:一个分布式的,基于内存的缓存机制,返回信息,特别是复杂的数据、结构比从本地从数据库加载要快得多。

一个memcached服务器所持有的数据将永远不会存储在磁盘上(仅仅只会被存储在内存中,这意味着数据不能够被持久化)。并且“只读存储器”缓存总是从后台存储(比如一个MySQL数据库)来填充它。如果一个memcached服务器“当机”了,那么数据也能够从MySQL数据库中恢复,尽管这样做的速度比从缓存中加载信息慢得多。

在2011年四月,MySQL发布了用于InnoDB以及MySQL簇存储引擎的一个新的memcached接口的预览。

使用memcachedAPI,web服务可以直接访问InnoDB以及MySQL簇存储引擎而不需要使用T-SQL,同时能够确保低延迟和高tuntulde读写查询。那些诸如已经被淘汰的sql解析以及占用更多的服务器硬件资源(CPU、内存、I/O)操作被专门地用来服务于存储引擎本身的查询。

这些都将有针对性地纳入到未来MySQL5.6的里程碑以及MySQL集群开发的发布中去。

原文发布时间为:2011-09-22

时间: 2024-10-27 14:40:04

MySQL with Memcached 简介的相关文章

《PHP、MySQL和Apache入门经典(第5版)》一2.8 MySQL权限系统简介

2.8 MySQL权限系统简介 PHP.MySQL和Apache入门经典(第5版) MySQL权限系统总是起作用的.当你第一次尝试连接MySQL服务器的时候,并且对于每一个后续的动作,MySQL都会检查以下3件事情. 你从哪里访问(你的主机)? 你说你是谁(你的用户名和密码)? 允许你做什么(你的命令权限)? 所有这些信息都存储在一个名为mysql的数据库中,当安装MySQL的时候,自动创建该数据库.在mysql数据库中,有如下几个和权限相关的表. columns_priv--为一个表中的具体字

分布式缓存系统Memcached简介与实践(.NET memcached client library)

原文:分布式缓存系统Memcached简介与实践(.NET memcached client library) 缘起: 在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载.缓存是解决这个问题的好办法.但是ASP.NET中的虽然已经可以实现对页面局部进行缓存,但还是不够灵活.此时Memcached或许是你想要的. Memcached是什么?Memcached是由Danga Interactive开发的,高性能的,分布式的内存对象缓存系统,用于在动态应用中减

《PHP、MySQL和Apache入门经典(第5版)》一一2.8 MySQL权限系统简介

2.8 MySQL权限系统简介 PHP.MySQL和Apache入门经典(第5版) MySQL权限系统总是起作用的.当你第一次尝试连接MySQL服务器的时候,并且对于每一个后续的动作,MySQL都会检查以下3件事情. 你从哪里访问(你的主机)? 你说你是谁(你的用户名和密码)? 允许你做什么(你的命令权限)? 所有这些信息都存储在一个名为mysql的数据库中,当安装MySQL的时候,自动创建该数据库.在mysql数据库中,有如下几个和权限相关的表. columns_priv--为一个表中的具体字

MySQL & NoSQL – Memcached 插件

大多数人都已经听说 NoSQL 数据库,其中使用最广泛的工具是 Memcached,你们通过 Memcached 再应用层和数据库之间添加一个缓存层.从 MySQL 5.6 开始,你可以获得一个全新的插件,这个插件把 MySQL 和 Memcached 集成起来.在此文中,我们将学习怎样在 Linux 中 安装这个插件,怎样做一些基础的配置. 先决条件 安装 libevent. 译者注:以下命令由译者提供. 命令如下: yum install libevent -y yum install ph

MySQL: 初试Memcached Plugin

Memcached Plugin对我而言是一个基本没触摸过的领域,因此本文会以一个"小白"的视角,开始一步步学习,从如何使用和源码实现的角度进行阐述. 关于Memcached的好处就不多说了,跳过语法解析和优化器,直达Innodb层,支持k-v操作,也就是所谓的NOSQL.同时你依然可以通过SQL来操作Innodb表. 官方文档列出的一大堆优点,见:http://dev.mysql.com/doc/refman/5.7/en/innodb-memcached-benefits.html

CentOS6.6 32位 Minimal版本纯编译安装Nginx Mysql PHP Memcached

声明:部分编译指令在博客编辑器里好像被处理了,如双横线变成单横线了等等,于是在本地生成了一个pdf版本,在下面地址可以下载. LNMP+Memcached CentOS是红帽发行的免费的稳定Linux版本,在企业服务器应用中都会选用Minimal版本,因为Minimal是CentOS"最纯洁"的服务器系统,因为Minimal版本连vim编辑器都需要自己安装,Minimal组件最少,无桌面,扩展灵活,非常适合做服务器. 1.配置网卡 Minimal版本的CentOS被安装后,网卡驱动默认

MySql数据引擎简介与选择方法_Mysql

一.数据引擎简介 在MySQL 5.1中,MySQL AB引入了新的插件式存储引擎体系结构,允许将存储引擎加载到正在运新的MySQL服务器中. 使用MySQL插件式存储引擎体系结构,允许数据库专 业人员为特定的应用需求选择专门的存储引擎,完全不需要管理任何特殊的应用编码要求.采用MySQL服务器体系结构,由于在存储级别上提供了一致和简单的 应用模型和API,应用程序编程人员和DBA可不再考虑所有的底层实施细节.因此,尽管不同的存储引擎具有不同的能力,应用程序是与之分离的. MySQL支持数个存储

MySQL Auto_Increment属性简介

在游戏行业中,经常会遇到删除"死号"的需求:我们的用户id是自增生成的,在删号程序中,会遇到与数据库断开连接,但还在运行的SQL语句: 对于自增的字段进行行记录的删除,会出现"断裂带"的情况,对于这种无法避免的情况,个人建议在数据维护过程中,analyze table 防止有过多数据存储的碎片: 对于新的自增id,不会复用老的id:下面列出不同存储引擎对auto_increment的支持: 对于 innodb,myisam,memory 存储引擎: 共同点: 1.序

MySQL死锁检测简介

对于死锁,MySQL并没有提供提供直接的变量来表示.对于5.5版本之后的performance_shcema可以提供锁的详细信息(但我们还是5.0呢),对于InnoDB自带的监控器 Innodb_lock_monitor 其输出总是输出到错误日志中,不方便进行对比. 我监控采用的是zabbix,采用agent 被动方式向zabbix server传送数据.脚本为shell,采用show innodb status 重定向 核心代码: 检测是否为新的死锁信息:   New_deadlock() {