memcached 和 mysql 结合使用的两种实现选择?

这是我在知乎上抛出的一个问题”我们的应用已经决定采mysql+memcached 的方式,针对的数据库版本是 mysql 5.1,目前已经进行了半个月的编码实现:

1.采用的是 ”memcached 和mysql 独立的实现方式,在编码层控制读 memcached,找不到再去数据库读,写数据库,然后再去更新 memcached,在这个过程发现逻辑复杂度比较高。

2.现在发现 “Using the MySQL memcached User-Defined Functions” 的实现方式,是通过触发器解决以上复杂逻辑的,从我的感觉上来看,应该是降低了代码复杂度。

我想诸位老师帮助我从理论上分析一下这两种方式的利弊,当然最好从实战角度分析两者的利弊,或者两者在使用上有什么值得注意之处,哪种更好,谢谢。“

各位老师的回答如下:

1.建议在应用层直接处理,而不要使用MySQL memcached User-Defined Functions

卢钧轶,MySQL DBA

虽然个人没用过memcached UDF,但是做过简单的评估,主要有以下几点觉得不适用于production。

1. 增加了Memcached和MySQL之间的耦合性。

试想如果UDF指向的memcached挂了,trigger方式调用的UDF是不会接收到报错返回的,程序段自然也无法做相应处理。

2. 增加了MySQL的服务器压力。

MySQL本身就是一个对服务器性能要求较高的DBMS,原本简单的App Memcached,现在变成了 App MySQL Memcached ,无形中增加了MySQL不必要的转发压力(网络,CPU的损耗)

3. 运维困难。

某台Memcached如需升级,分离式架构只需要修改APP配置文件。而UDF的方案就需要修改相应的trigger,trigger是很难进行版本控制和批量下发管理的,无形中对运维造成了很大的困难

结合这位老师的思路经过自己的进一步考察,单单对于第一点,我觉得就可以抛弃使用memcached UDF了,作为一个为上万客户提供服务的后台程序,容错,单点故障是必须要考虑并处理的,如果无法准确知道错误的发生,就很难迅速进行补救;

2.给出在应用层简化处理memcached逻辑的思路

范凯,互联网创业者,JavaEye网站创始人

>>在编码层控制读memcached,找不到再去数据库读,写数据库,然后再去更新memcached,在这个过程发现逻辑复杂度比较高。

如果你的应用数据的粒度划分足够细,并且配合良好的ORM层对象缓存,那么没有任何逻辑复杂度,代码根本不需要涉及这些部分,都是ORM层缓存自动处理掉了。

经过我的进一步考察,相关的ORM框架有基于java的,C#的,由于我们的项目是使用C++语言实现,目前我还没有找到与之对应的相关ORM框架。

3.给出在应用层做memcached和mysql结合的使用建议

曹政

我喜欢在应用层做,没觉得逻辑复杂在哪里。

几个要点

1:memcache和mysql的链接时间,如果两个链接同时开启,先开启的会影响后开启的,比如memcache先开启链接,然后开启mysql,如memcache阻塞,程序未及时释放,会连带导致mysql崩溃,这种情况以前遇到过,记住链接必须加超时限制,防止连带阻塞现象。或者,释放memcache连接后,再开启mysql链接(这样不利于程序封装)

2:memcache命中率如不高,不如不用。做memcache应用后,第一件事情是测试命中率情况,不能认为加了缓存就一定可以提高效率。

3:如果数据块较大,放在memcache中读取的效率或许不如mysql。

4:随时监控swap分区占用情况,确保内存使用合理。

5:memcached适合简单的key-value查询,如果涉及结构性内容,或者排名类应用,建议使用redis.

本文转自永远的朋友博客51CTO博客,原文链接http://blog.51cto.com/yaocoder/1016257如需转载请自行联系原作者

yaocoder

memcached 穿透mysql_memcached 和 mysql 结合使用的两种实现选择?相关推荐

  1. dapper mysql 批量_MySQL数据库之c#mysql批量更新的两种方法

    本文主要向大家介绍了MySQL数据库之c#mysql批量更新的两种方法 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 总体而言update 更新上传速度还是慢. 1:  简单的 ...

  2. 修改mysql数据库默认字符集_MySQL数据库之修改mysql默认字符集的两种方法详细解析...

    本文主要向大家介绍了MySQL数据库之修改mysql默认字符集的两种方法详细解析 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. (1) 最简单的修改方法,就是修改mysql的m ...

  3. mysql 时间查询_两种常用MySql查询时间段的方法

    MySql查询时间段的方法很多,下面就为您介绍几种最常用的MySql查询时间段方法,如果您在MySql查询时间段方面遇到过问题,不妨一看. MySql的时间字段有date.time.datetime. ...

  4. mysql安装文件格式_一、安装方式       MySQL安装文件分为两种,一种是MSI格式的,一种是ZIP格式的。下面来看看这两种方式:       MSI格式的可以直接点击安...

    一.安装方式 MySQL安装文件分为两种,一种是MSI格式的,一种是ZIP格式的.下面来看看这两种方式: MSI格式的可以直接点击安装,按照它给出的安装提示进行安装,Windows操作系统下一般MyS ...

  5. mysql复制表的两种方式

    mysql复制表的两种方式. 第一.只复制表结构到新表 create table 新表 select * from 旧表 where 1=2 或者 create table 新表 like 旧表 第二 ...

  6. 简单介绍MySQL开启事务的两种方式

    本篇文章给大家分享MySQL 是如何开启一个事务的,原文通过两种方式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧 方式 1 START TRANSACTION 或 ...

  7. mysql temporary_MySQL中的两种临时表

    http://mysql.taobao.org/monthly/2016/06/07/ 外部临时表 通过CREATE TEMPORARY TABLE 创建的临时表,这种临时表称为外部临时表.这种临时表 ...

  8. memcached 与 mysql_memcached 和 MySQL 的 query ?

    cache 相比,有什么优缺点? 把 memcached 引入应用中,还是需要不少工作量的.MySQL 有个使用方便的 query cache,可以自动地缓存 SQL 查询的结果,被缓存的 SQL 查 ...

  9. django框架使用mysql报错,及两种解决方法

    1.django框架 settings.py文件中部分代码: DATABASES = {# 'default': {# 'ENGINE': 'django.db.backends.sqlite3',# ...

最新文章

  1. 灰度直方图均衡化实现
  2. JD AWS vue上传文件
  3. 上云、微服务化和DevOps,少走弯路的办法
  4. Leetcode 142. 环形链表 II (每日一题 20210902)
  5. 嵌入式linux 分区挂载,嵌入式linux系统的开发——文件系统的分区和挂载
  6. 数据可视化(9)--数据可视化6步法
  7. RuntimeError: [enforce fail at inline_container.cc:145] . PytorchStreamReader failed reading zip arc
  8. MySQL主从、主主、半同步节点架构的的原理及实验总结
  9. 富士康欲进军电动汽车市场 目标占据市场10%份额
  10. java cookie id,我如何在Java中获取会话ID
  11. JAVA类,变量的赋值一个小细节,以及static标注变量的意义
  12. mysql连接池cp_BeeCP
  13. 20145205 《信息安全系统设计基础》第1周学习总结
  14. u盘启动怎么修复计算机,电脑店u盘启动winpe如何修复系统引导
  15. 知识图谱系列(一):如何构建一个简单的知识图谱
  16. 【Python怎么批量修改文件名称】
  17. ie浏览器开发比谷歌浏览器_跨浏览器开发:处理IE
  18. Oracle数据导入导出详解
  19. QT Designer
  20. 对话 Do Kwon :流亡、谎言和梦醒时分的懊悔

热门文章

  1. 中顶SPA会所管理系统
  2. win7安装python错误0x80072f7d
  3. 基于javaweb+jsp的手机店销售信息管理系统(JavaWeb JSP MySQL Servlet SSM SpringBoot Layui Ajax)
  4. C. Colorful Bricks(dp)
  5. excel文件写入、读取:node-xlsx模块
  6. 员工计算机办公培训报道,加强工作技能学习 提高职工办公能力--县自然资源和规划局开展计算机技能培训...
  7. 确保移动应用成功的16项指标
  8. 【VS开发】VSTO 学习笔记(十)Office 2010 Ribbon开发
  9. Grafana 8.4.4安装
  10. 没希望的外贸客户被我拉了回来,再一次下单!