MySQL 中 QueryCache 的锁模型
有同学在问 MySQL中 QueryCache(QC)的锁是 “全局锁”还是 “表锁”。这里简要说明一下。 1、 QC基本概念 这个是实现在MySQL层(非引擎层)的一个内存结构,基本规则是将满足一定条件的查询结果缓存在内存中,若同样的查询再执行第二次,而且缓存没有失效,则可以直接返回查询结果,无需到引擎获取数据。
精选技术长文、实践记录与系统化阅读
低噪声、高可扫读;标题、摘要、来源、标签一目了然。
采集自各技术站点的近期文章。
有同学在问 MySQL中 QueryCache(QC)的锁是 “全局锁”还是 “表锁”。这里简要说明一下。 1、 QC基本概念 这个是实现在MySQL层(非引擎层)的一个内存结构,基本规则是将满足一定条件的查询结果缓存在内存中,若同样的查询再执行第二次,而且缓存没有失效,则可以直接返回查询结果,无需到引擎获取数据。
FFLIB 目前处于alpha阶段,一些有用的功能还需继续添加。但是FFLIB一开始就是为了解决实际问题而生。Broker 即可以以独立进程运行,也可以集成到某个特定的进程中启动。除了这些,FFLIB中使用epoll实现的网络层也极具参考价值。网上有一些关于epoll ET 和 LT的讨论,关于哪种方式更简单,本人的答案是ET。ET模式下epoll 就是一个完全状态机。开发者只需实现FD的read、write、error 三种状态即可。
ORACLE接触的久了,我的大脑也开始遵循LRU原则,不常用的知识很快就会被刷新掉,为了和ORACLE一样保证数据一致性,只好将这些东西保存到硬盘上。 前段时间数据已经加载到数据库,最近一直做的是整理这些数据,SUBSTR和REPLACE函数用的比较多, 这里简单记录下。 有一张存放图片的表,包含以下字段,IDENTIFIER是档号,JPG_PATH是图片的路径和名字,其他字段这里没有用到,不做描述。
即使是非常简单的STRUTS2应用都不可用,还有很多其他框架,也都有自己操作classLoader的情况,如果不支持JAVA框架,这样的SAE,还有啥存在的价值呢?所以这些权限,不止简单的禁止了事,它后面还有很多东西要做。没有可用性的安全,不是真的安全,这样的安全处理方案,早晚要在业务的压力下消失不见,要保证可用性,也要保证安全,这才是真正的安全。所以,坐等SAE对classLoader的限制消失,一切回归于0。
今天4月份在高阳同学的IO协议栈相关的PPT里面发现了这张图,忍不住还是贴了出来。 这张图很清晰的把linux IO协议栈的层次给勾出来了,而且内容很与时俱进,特别是SCSI设备的层次对大家理解sg3这样的包非常有帮助,强烈推荐大家好好研习!
平时我们视觉设计工作中可能采用得更多的是偏自下而上的加工方式,而若能很充分仔细地分析情绪板的结果、并发挥主观能动性充分利用,则能帮助我们锻炼自上而下的加工方式(并且这种主观能动性的发挥还有正确大方向的保障)。两种认知加工方式的反复轮替训练和结合使用则有助于我们提升设计的思维水平。
继续上一次的sys模块升级的话题,我们再讨论一下升级基本原理,了解一下code和code_server模块。 简单升级 上文也说到过,如果升级未改动 State 里的内容,你可以这样升级。 在集群的每个节点内(当然也可以通过 rpc) 拷贝 beam 到线上的 ebin 目录。 code:purge(Module). code:load_file(Module). 让代码触发 Fully qualified function calls,走到新的 beam 代码。 如果你想省略后 2,3 步,可以利用mochiweb的 reloader 模块进行自动加载。 升级的原理 结合code_server代码来研究一下升级的原理。 erlang 可以同时允许两套代码同时加载运行在虚拟机内部运行, 一套被成为老版本代码 , 一套被成为当前版本代码,也成为最新代码。
看完《直面内心的恐惧》,正儿八经地写了笔记,觉得意犹未尽,不如就趁热打铁,让我们家恐惧出来跟大家见见面,这其中带着我对它从此能变个模样的期许。因为对我来说,现在这个阶段太重要了,重要得不得不把自己那点陈谷子烂芝麻全部搬出来搅拌一次,提取其中的精华,为自己打一针鸡血。 对一个从小就充满恐惧的人来说,恐惧如同衣服一样,经常感觉不到它的存在。老妈告诉我,跟别的小p孩学走路不一样,我学走路特别小心特别慢,那一步怎么也跨不出去,对着一条小水沟就能挣扎半个世纪。每次听到这里我就会想,如果当时对着那个小p孩的屁股轻轻踹一脚,也许今天就大不一样了。 不过人生没有假设。小p孩就这么长大了,伴随它成长的恐惧也越来越多。恐惧和害怕还不太一样,害怕往往是“具象”的,它张牙舞爪地扑过来,让你产生强烈的生理反应,你也知道要面对、要克服的是哪路神仙,比如跳进水里的窒息感和失重感。
一个朋友的数据库在经过自己的千辛万苦终于open成功,但是几分钟就down掉,使得他想导出数据重建库的目标不能实现.让我帮忙处理 alert日志报ORA-00600[kafspa:columnBuffer1] 这里出现ORA-00600[kafspa:columnBuffer1],一个未知的错误,但是根据相关的提示,可以大概猜出来是什么原因导致数据库异常 出现这个错误,使得我们想到一个smon的功能,清理临时段.该数据库down掉很可能和smon清理临时段的过程发生失败有关系 这个错误提示是因为smon内部最多允许发生100次错误,记录错误发生了8次,当然这次数据库down掉是smon还没有达到100次就直接abort掉 分析trace文件 果然是smon在查询type#=3的时候发现异常,出现ORA-00600[25027]错误.通过对seg$相关视图分析,可以知道type#=3表示临时.....
联网行业创业的人真乃是前赴后继的进行着,创业不是你一个人在战斗,需要招聘员工,类型无外乎如下几种.......
原本打算收集一些 WordPress 奇技淫巧,不过精力有限维护不过来,予以关站处理。这里就将之前的文章综合整理下,供各位博友尽情收藏。
可以用说用到MySQL的地方,只要数据量一大, 马上就会遇到一个问题,要分库分表. 这里引用一个问题为什么要分库分表呢?MySQL处理不了大的表吗? 其实是可以处理的大表的.我所经历的项目中单表物理上文件大小在80G多,单表记录数在5亿以上,而且这个表 属于一个非常核用的表:朋友关系表. 但这种方式可以说不是一个最佳方式. 因为面临文件系统如Ext3文件系统对大于大文件处理上也有许多问题. 这个层面可以用xfs文件系统进行替换.但MySQL单表太大后有一个问题是不好解决: 表结构调整相关的操作基 本不在可能.所以大项在使用中都会面监着分库分表的应用.
今天开始学习RoR,刚开始入门就遇到一些问题,记笔记如下。以下运行环境均为MacOS 10.6 + MacPorts 2.0.4,ruby为MacPorts下的ruby1.9.3-p125_0。 rails-3.2.3升级到rails-3.2.7的问题 由于教程使用的rails版本是3.2.7,而我以前安装的rails为3.2.3,于是想升级一下。 $ rails -v Rails 3.2.3 $ sudo gem update rails ... Successfully installed rails-3.2.7 gem报告已正确安装了rails-3.2.7,查看gem list的确也安装成功了: $ gem list --local ... rails (3.2.7, 3.2.3) 但运行rails的版本号还是3.2.3: $ rails -v Rails 3.2.3 百思不得其解。
今天把 Skynet 的集群部分,以及 RPC 协议设计实现完。 先谈谈集群的设计。 最终,我们希望整个 skynet 系统可以部署到多台物理机上。这样,单进程的 skynet 节点是不够满足需求的。我希望 skynet 单节点是围绕单进程运作的,这样服务间才可以以接近零成本的交换数据。这样,进程和进程间(通常部署到不同的物理机上)通讯就做成一个比较外围的设置就好了。 为了定位方便,我希望整个系统里,所有服务节点都有唯一 id 。那么最简单的方案就是限制有限的机器数量、同时设置中心服务器来协调。我用 32bit 的 id 来标识 skynet 上的服务节点。其中高 8 位是机器标识,低 24 位是同一台机器上的服务节点 id 。我们用简单的判断算法就可以知道一个 id 是远程 id 还是本地 id (只需要比较高 8 位就可以了)。
前段时间朋友说让给做一个js延时加载图片人功能,原来也的网上见过这些,但是没有具体的研究。今天学习了下,发出来和大家一直分享。至于延时加载的好处我在这里就不说了,好多朋友都说可以减少服务器短时间的请求数量。一、原理分析 1.可显示区域的的图片正常显示,不可显示的不去请求, 2.当滚动滚动条时,计算可显示的图片,把图片的src的真实路径写入。 二、代码这里我用的是jquery来做的,当然大家如果明白了原理,用什么做都可以做出很不错的效果。
MySQL5.5引入了半同步复制(Semi-synchronous Replication),以下是对于半同步复制的认知和理解: 1. 半同步启动需要主从两端都需要加载安装各自对应的semi模块,从库端支持半同步功能的数量至少一台;主库端当一个事务成功提交后,并不及时反馈给前端用户,该线程会被临时block,等待由从库端返回确认该条事务也同时成功写入到relay log中的receipt(回执确认),这时主库线程才返回给当前session告知操作完成,半同步复制并不关心在从库一端该事务是否都被执行并被提交完成。 2. 半同步与异步复制相比,进一步提高了数据完整性(不太理解为什么这么说),保证了事务成功提交后,有两份记录被记录下来,一份在主库上,另一份至少在一个从库上。 3. 半同步复制在平衡性能与数据可靠性方面,采用了network group commit的方式来复制binlog。
相比C, C++提供了更多的新的语法, 新的语言特性, 这也就是说, 需要更多的学习时间, 更大的学习成本. 举个例子, 大家看看C++ primer有多厚, 看完这些还不够, 因为还有很多的细节你可能会误用, 所以又有: “Effective C++”, “More Effective C++”, 哦, 还有STL, ” Effective STL”等等. 你真的愿意为了学习一门语言, 花费如此巨大的精力么?
财务自由,嘿嘿,很多年薪三四十万家产三四百万的人,不愿意离职过自己喜欢的日子,原因也是“财务不自由”。这个世界上有年薪5万的消费方式,年薪50万的消费方式;供小房子的消费方式,供大房子的消费方式;沙县小吃的消费方式,海底捞的消费方式。真正束缚你的并不是金钱,绝大部分人终其一生都不会拥有财务自由,捆住脚的其实是惯性——停留在当下的惯性,以及对不可知未来的恐惧。
周报是什么呢,它是一个管理上的怪胎。几乎2年前,我写了篇文章《周报的逻辑》,据说还被某广州IT公司内部群发。回头来看,正如我对自己博客的长期总结:1/3是蠢话,1/3是废话,只有1/3还值得一看。时隔22个月,我打算重新谈一谈周报这个话题。首先,周报起源于管理者对下属的不了解,不信任。因为不知道你最近在做什么,接下来准备做什么,所以要给我一份汇报。又因为对你不是很信得过,所以用“每周一期”这样的高频度向我汇报。了解和信任在职场中,其实是极为稀罕之物。别不开心,这是实话。上司每天站在身后盯着你工作吗?他在每台电脑里安装了监控软件吗?那他怎么知道你的工作进展——既然他不是跟梢或者黑客。懂得跟上司主动沟通的人不多,即便有,也会被同事鄙夷为“马屁精”。大多数人都坦然地等着上司找自己来问话,你想想情景是不是很傻……XX,你最近的任务进展如何了?
从一个团队的服务态度,就能看出这个团队的未来,因为他们的服务态度大多取决于工作态度,你想想,如果一个团队,大家工作顺心,充满朝气,工作劲头肯定是很大的。。。像XX网这样出了问题联系不到人,要么是大家对公司不满,要么是管理体制问题,你能指望他做多大?