基于存储引擎MEMORY加触发器的应用场景之一剖析

导读:

某限时特卖B2C网站技术总负责人想采用一种简单、开发成本极低且成熟可靠,能满足前期针对特卖信息快速处理的支持,且要求不采用第三方MemCache或者编写程序操作内存的方案,考虑到其业务特点:特卖期限高峰,不超过5000个特卖信息,且需要频繁、快速修改的数据全为数值类型,且每条记录可控制在100字节以内,为此建议其前期考虑使用MySQL支持的Memory引擎解决响应速度,外加触发器的模式解决数据的安全性。基于此需求而编写此篇技术文章,以帮助更多技友们,了解Memory引擎及触发器的功效,多一种解决方案。

一.知识点:

1.存储引擎MEMORY知识点

1.1 MEMORY支持的特性

引擎限制 内存表 事务 不支持 锁类型 表级别
多版本控制 不支持 HASH索引 支持 全文索引 不支持
B树索引 支持 数据缓存 N/A 索引缓存 N/A
族索引 不支持 数据加密 支持 数据库集群 不支持
数据压缩 不支持 外键 布支持 备份/基于时间点恢复 支持
复制 不支持 统计信息更新 支持
查询缓存 支持

1.2 MEMORY引擎的存储特性

卫哲内部邮件谈辞职:震动甚至阵痛是必要的

2月21日晚间消息,阿里巴巴B2B公司CEO卫哲刚刚对内发布邮件,对于引起外界震惊的辞职一事作出解释,他表示申请辞职的原因是作为CEO没有起到阿里巴巴价值观捍卫者的最重要的职责,辞职引发的震动甚至阵痛是必要的。

  阿里巴巴B2B公司(1688.HK)今日宣布,为维护公司“客户第一”的价值观及诚信原则,2010年公司清理了约0.8%逾千名涉嫌欺诈的“中国供应商”客户,公司CEO卫哲、COO李旭晖因此引咎辞职,原淘宝网CEO陆兆禧接任。

马云:过去一个多月我很痛苦、很纠结、很愤怒

阿里巴巴B2B上市公司今日发布公告称,董事会已经批准B2B公司CEO卫哲、COO李旭晖引咎辞职的请求。阿里巴巴集团董事局主席马云发内部邮件称,“过去的一个多月,我很痛苦,很纠结,很愤怒;对于这样触犯商业诚信原则和公司价值观底线的行为,任何的容忍姑息都是对更多诚信客户、更多诚信阿里人的犯罪!”

京东商城招MySQL DBA

职位名称:MySQL DBA
公司:京东商城
工作地点:北京
待遇:面议,实力优秀薪水越多,一经录用待遇从优

岗位职责:
1. 研究和升级mysql架构。
2. mysql安装,升级,运行维护。
3. 审核SQL代码,协助开发人员进行代码优化。

raid0,raid1,raid10,raid5,raid50,raid6,raid60的功能总结简述

1.raid0的特性
采用剥离,数据将在几个磁盘上进行分割。数据 被分成很多数据块,每一数据块会被写入不同的磁盘。从而,每一磁盘的工作负荷都得到了降低,这有助于加速数据传输。RAID-0可让磁盘更好地响应,尤其 是电子邮件、数据库和互联网应用。实施RAID-0最少需要两块硬盘。优势:通过把I/O负载分布到多个硬盘上,可提高系统性能。实施简单。需要注意的 是:RAID-0不具有数据保护功能,不适合于关键数据。

飞信招聘高级MySQL DBA

职位名称:高级MySQL DBA

公司:飞信
工作地点:北京

职位描述:
1.负责公司MySQL数据库日常运维及故障解决,备份恢复维护;
2.负责公司MySQL数据库性能调优及数据安全,并负责补丁升级;
3.处理日常事务性数据库操作,提供业务和公司决策支持;
4.提供内部员工的数据库培训。

常用RAID类型优劣比较

1.1 常用RAID类型优劣比较
1.1.1 RAID0
要实现RAID0,必须要有两个以上硬盘驱动器,RAID0实现了带区组,数据并不是保存在一个硬盘上,而是分成数据块保存在不同驱动器上。因为将数据分布在不同驱动器上,所以数据吞吐率大大提高,驱动器的负载也比较平衡。如果刚好所需要的数据在不同的驱动器上效率最好,则可以并发地进行读写。RAID0不需要计算校验码,实现容易;其缺点是它没有数据容错能力,如果一个驱动器中的数据发生错误,即使其它盘上的数据正确,也导致整个系统崩溃。不应该将它用于对数据安全性与稳定性要求高的场合。如果用户进行图象(包括动画)编辑和其它要求传输比较大的场合使用RAID0比较合适。同时,RAID可以提高数据传输速率,比如所需读取的文件分布在两个硬盘上, 这两个硬盘可以同时读取。那么原来读取同样文件的时间被缩短为1/2。

MySQL rebuild表导致的innodb error;

mysql 5.1.40 @ rhel 5u4 X86_64
innodb_file_per_table=1

有一个300G左右的INNODB表,进行了optimize table 操作;
其实做了RECREATE + analyze table 操作;
在等了近8个小时后,就在快要完成的时候,报了一个如下错误;

=================================================================================
InnoDB: Warning: a long semaphore wait:
–Thread 1170860352 has waited at row/row0mysql.c line 1711 for 242.00 seconds the semaphore:
S-lock on RW-latch at 0xd86780 created in file dict/dict0dict.c line 728
a writer (thread id 1174853952) has reserved it in mode  exclusive

MYSQL 源码 – innodb master thread 2

上一次我们看到在标准版INNODB 存储引擎的MASTER_THREAD中,每秒(或每次)只刷100个脏页,
这样在更新量较大(比较大批量INSERT)的时候,MYSQL的脏块刷新可能会跟不上,导致性能下降;
在INNODB PLUGIN中,这个问题有一个较好的解决:
  %% 加入参数:innodb_io_capacity, default 200 ,表示 IO 吞吐量,单位PAGE ,
    优化处理: