
存储研究
tenfyguo
目前在国内某互联网公司从事移动支付和互联网金融相关产品的架构设计和研发管理工作。
展开
-
SSD和HDD的区别
SSD与HDD最大的不同是它没有马达、盘片、磁头摇臂这些HDD必需的机械部件,这是由两种硬盘不同的工作原理所决定的。SSD相比HDD来说节省了机械部件运动的时间,并且SSD所使用的主要存储元件NAND闪存是一种电子元件,因此它的数据传输速度要比HDD快得多。另外,根据测试,HDD的数据操作时间约95%是花在机械部件运动上,具体可以看几个基本的量级:HDD的数据操作时间主要是由下面这些组原创 2014-03-25 10:28:49 · 7325 阅读 · 0 评论 -
关于磁盘性能的几点总结
我们知道目前硬盘可以分为单碟盘和多碟盘,单碟盘只有一个盘片,而多碟盘则有多个碟片,每个碟片的正反两面都可以存储数据,而每个碟面则需要一个读写磁头。但是,对一个磁盘来说,在同一个时刻,只能有一个磁头来读写磁盘,而不管盘体有几个碟片,因此,增加碟片并不能增加磁盘的并发IO能力,只能增加磁盘的存储容量。 其实,对一个磁盘来说,增加存储容量有两种办法:1,增加碟片;2,增加每个碟片的密原创 2012-08-13 22:21:14 · 2504 阅读 · 0 评论 -
RAID小结
RAID (Redundant Array of Independent Disks, 独立磁盘冗余阵列)是指多个相同大小,相同品牌的硬盘当作一个硬盘使用,使得性能达到甚至超过一个价格昂贵,容量巨大的硬盘。RAID需要raid卡的支持,由于将多个磁盘组合成一个逻辑盘,从OS看,RAID就像一个硬盘,而不是几个硬盘,因此操作系统只会把它当作一个硬盘。 根据不同的磁盘组合策略,常见的R原创 2012-07-15 23:40:05 · 974 阅读 · 0 评论 -
关于专用存储组件研究的几点心得
一,传统的mysql,linux通用文件系统等的设计和研发都是主要针对通用的场景的,因此在对应特有的场景模式下,存在一定的天花板,这是自建组件产生的核心需求背景。二,存储架构的设计一定要符合用户的数据访问模型,主要:数据量,读写比例,落地性,交互性,是否存在明显的热点数据等。三,设计上:meta和对象分开存储,更加有利于后续的扩张和运营。原创 2012-08-11 23:11:44 · 719 阅读 · 0 评论 -
mysql中如何安装innodb plugin
一, 背景说明: 1, windows xp 环境; 2,已经安装mysql服务器版本, 可以通过下面方式查看: 3,默认的存储引擎是innodb,内置的非innodb plugin; 需求:为了利用新的存储引擎 Innodb plugin的更多特性 ,决定使用innodb plugin引擎原创 2012-07-01 14:40:42 · 12547 阅读 · 2 评论 -
InnoDB存储引擎中的锁
我们知道,mysql常用的存储引擎是MyISAM和InnoDB,对于MyISAM引擎来说,只支持表锁,并发情况下的读一般都没问题,但对并发插入的性能就要差一些了。InnoDB引擎则支持行锁机制,在锁的粒度上可以更细,从而进一步提高并发插入的性能。一,共享锁和排他锁的概念 InnoDB存储引擎实现了如下两种标准的行级锁: 1,共享锁 (S Lock), 允许原创 2012-06-24 22:50:36 · 1189 阅读 · 0 评论 -
mysql分区管理 - range分区
为了更好的演示range分区,首先对mysql server的启动和关闭进行说明:一,如何启动mysqld? 本人把mysql安装在windows环境下,安装的主目录homedir是"c:\Program Files\MySQL\MySQL Server 5.1\",启动方法非常简单:首先进入cmd命令行窗口,如下图: 执行如下命令:c原创 2012-05-13 23:02:41 · 3494 阅读 · 0 评论 -
MySQL分区管理 - LIST分区
在上一篇文章中,我们通过例子重点介绍了基于某列(若存在主键或者唯一键,则该列必须是这些键的子集)建立区间的分区,区间分区主要用于按某个范围且具有连续值的列。而本章介绍的list分区,顾名思义,list就是可以列举的意思,说明对应的值是离散的,而非连续的区间。 插入一些数据: 需要注意的是:在用Insert插入多条记录到表中,如果原创 2012-05-22 22:50:45 · 1408 阅读 · 0 评论 -
通过触发器实现物化视图
在电商平台中,我们有时需要对用户订单进行一些聚合计算,如订单总数有多少,总金额有多少,平均价格是多少,而实现这个特性基本有下面几个办法:一, 每次查询这些聚合信息的时候,直接执行SQL语句的sum,avg,count等,好处是实现简单,不足是每次均需要进行扫表查询,特别是订单变更比较少,而查询比较多的情况下,此方法会浪费不少的机器资源。二, 新建一个聚合表,当有订单增删改的时候,通原创 2012-06-10 23:05:37 · 1967 阅读 · 0 评论 -
MySQL 架构 - MySQL 存储引擎 -InnoDB
InnoDBInnoDB支持事物处理,它处理许多短期的事物,这些事物常常是成功执行而不是回滚的。InnoDB是MySQL最受欢迎的存储引擎了。常见的非事物引擎需求,如性能和自动回复,它也完全具备。 InnoDB在一些列的文件中存储数据,被称为表空间(tablespace)。表空间对于用户来说是黑盒,InnoDB内部负责处理。在MySQL4.1以及更新的版本中,InnoDB可以存储数据以转载 2012-09-29 11:09:54 · 874 阅读 · 0 评论 -
MySQL 架构 - MySQL 存储引擎 - 其他存储引擎
MEMORY (HEAP)引擎 当你需要快速读取数据,在服务器重启后,也不需要改变和保存数据,使用Memory表(以前叫做HEAP 表)是非常合适的。Memory表要比MyISAM表快上一个级别。所有的数据都放在内存中,所以查询不用等待硬盘的I/O。在服务器重启后,表结构依然存在,但是数据都会丢失。 下面说几个可以用到Memory表的情况。 对于查找或映射表比较适合,如转载 2012-09-29 16:06:15 · 1095 阅读 · 0 评论 -
HDFS Namenode是如何工作的?
来自:http://www.youkuaiyun.com/article/2012-07-03/2807066HDFS(Hadoop Distributed Filesystem)客户端通过被称之为Namenode单服务器节点执行文件系统原数据操作,同时DataNode会与其他DataNode进行通信并复制数据块以实现冗余,这样单一的DataNode损坏不会导致集群的数据丢失。但NameN转载 2012-10-06 16:19:36 · 11888 阅读 · 1 评论 -
13个mysql数据库的实用SQL小技巧
来自:http://www.gbtags.com/gb/share/2351.htmMYSQL作为最成功的开源关系型数据库之一,拥有大批的粉丝(本人也是),在这篇文章中,我们精心收集了10个最实用的mysql查询技巧,希望能够带给大家惊喜,如果大家也有非常不错的SQL,请留言与我们分享! 相关阅读:SQL ,MYSQL使用CASE来重新定义数值类型SELECT id转载 2014-02-12 15:10:33 · 1173 阅读 · 0 评论 -
DML对innodb索引的影响
首先需要了解一下innodb索引结构,关键下面几点:1,索引结构是B+tree;2,主键索引的索引结构和数据一起,即数据放到主键索引B+tree的叶子节点中;3,辅助索引的索引结构也是B+tree,但叶子节点存储关键字和对应的主键,不直接存储数据;基于前面三点,下面我们重点分析一下DML操作对innodb 索引的影响:1,innser操作 在主键索引cluste原创 2013-12-31 16:20:16 · 1434 阅读 · 0 评论 -
关于数据运营的几点小tips
1,表的设计上,不能一个表存在非常多的字段,一般超过30-40个就要考虑拆分表的设计了。2,需要考虑数据的冷热程度,把冷热数据放到不同的表,而不是一起存储,便于后续进行相应的处理策略。3,对数据库的时间不要用mysql自身的函数now(),而是由程序自己计算好时间传给db,否则利用binlog进行误操作恢复会存在麻烦。4,分库分表的规则需要考虑业务形态,如是否需要定时归档,如具有时间熟原创 2013-04-02 17:31:00 · 928 阅读 · 0 评论 -
Can’t connect to MySQL server有关linux tcp连接优化
来自:http://yananguo.gotoip4.com/最近有2台web机器链接mysql有时会出现Can’t connect to MySQL server的情况,查看exception日志:如下:[message:protected] => SQLSTATE[HY000] [2003] Can’t connect to MySQL server on ‘192.1转载 2013-01-13 23:28:16 · 2759 阅读 · 0 评论 -
如何减少 innodb 数据库关闭的时间?
来自:http://blog.chinaunix.net/uid-10449864-id-2956856.html 大家在使用innodb数据库的时候,会发现有这么一个现象,当我们需要关闭或者重新启动mysql服务的时候,会需要相当一段长的时间,如果是数据库进程异常关闭,打开数据库又会花很长的时间来作恢复。 开始还以为是数据库太大了引起的,后来看到一篇文章讲的是 “转载 2013-01-13 23:22:52 · 898 阅读 · 0 评论 -
How to decrease InnoDB shutdown times
from: http://www.mysqlperformanceblog.com/2009/04/15/how-to-decrease-innodb-shutdown-times/Sometimes a MySQL server running InnoDB takes a long time to shut down. The usual culprit is flushi转载 2013-01-13 23:17:06 · 680 阅读 · 0 评论 -
Memcached的CAS机制的实现
转载自:http://1.simpcl.sinaapp.com/?p=1CAS,又称Compare-and-Swap,代表一种原子操作。Memcached的CAS机制解决的问题及其原理:1. 实现了Check-and-Set原子操作功能;2. 其使用方式为:首先使用gets指令一个key-value及key对应value的版本号;其次操作产生新的value值;最后使用c转载 2012-12-31 18:50:32 · 9363 阅读 · 0 评论 -
利用CAS机制实现多进程,多线程下的无锁并发控制
CAS机制:CAS,又称Compare-and-Swap,代表一种原子操作一, 为每一个Node在Set的时候分配一个cas值,(本质是版本号,返回的Node和存储Node的cas值一样,每次要更新这个Node时要检查cas的值是否与取出来时一致)二, 只有在Update一个key的value时才会造成多线程冲突,只是Set/Get是不会的,单线程也不会并发问题。三, 如何维护原创 2012-12-31 18:37:32 · 5958 阅读 · 0 评论 -
google的levelDB实现原理分析
转载自:http://www.cnblogs.com/haippy/archive/2011/12/04/2276064.html LevelDb日知录之一:LevelDb 101 说起LevelDb也许您不清楚,但是如果作为IT工程师,不知道下面两位大神级别的工程师,那您的领导估计会Hold不住了:Jeff Dean和Sanjay Ghemawat。这两位是Goog转载 2012-12-31 12:07:22 · 6458 阅读 · 1 评论 -
mysql分区管理 - hash分区
hash分区的目的是将数据按照某列进行hash计算后更加均匀的分散到各个分区,相比,range和list分区来说,hash分区不需要明确指定一个给定的列值或者列值集合应该在保存在哪个分区,mysql会自动按照hash计算后完成这些工作,我们只需要基于将要进行hash的列值指定一个列或者表达式,以及可选的指定要分区的表总的分区数量。 下面我们举一个例子来说,hash分区如何创建。首先原创 2012-06-03 17:54:37 · 11109 阅读 · 0 评论 -
Partitioning Keys, Primary Keys, and Unique Keys
原文来自:http://dev.mysql.com/doc/refman/5.1/en/partitioning-limitations-partitioning-keys-unique-keys.html This section discusses the relationship of partitioning keys with primary keys翻译 2012-06-03 21:32:20 · 3337 阅读 · 1 评论 -
5种提高SQL性能的方法
有时, 为了让应用程序运行得更快,所做的全部工作就是在这里或那里做一些很小调整。啊,但关键在于确定如何进行调整!迟早您会遇到这种情况:应用程序中的 SQL 查询不能按照您想要的方式进行响应。它要么不返回数据,要么耗费的时间长得出奇。如果它降低了报告或您的企业应用程序的速度,用户必须等待的时间过长,他们就会很不满意。就像您的父母不想听您解释为什么在深更半夜才回来一样,用户也不会听你解释为什么查询耗费这么长时间。(“对不起,妈妈,我使用了太多的 LEFT JOIN。”)用户希望应用程序响应迅速,他们的报告能够在转载 2010-09-12 16:21:00 · 703 阅读 · 0 评论 -
InnoDB和MyISAM区别
<br /> MySQL作为当前最为流行的免费数据库服务引擎,已经风靡了很长一段时间,不过也许也有人对于MySQL的内部环境不很了解,尤其那些针对并发性处理的机制。今天,我们先了解一下MySQL中数据表的分类,以及它们的一些简单性质。 <br />截至目前,MySQL一共向用户提供了包括DBD、HEAP、ISAM、MERGE、MyIAS、InnoDB以及Gemeni这7种表。其中DBD、InnoDB属于事务安全类表,而其他属于事务非安全类表。<br /> <br />DBD <br />Berkel转载 2010-07-17 19:52:00 · 935 阅读 · 0 评论 -
衡量我们架构的数据库的优劣--谈数据库性能测试
在做体系规划的时候,我们需要根据我们的体系的业务量的需求,对我们的数据库进行选型,一个系统的运行速度和稳定性的保障,不仅仅是网络上要去考虑的,作为底层的提供数据存储应用的数据库服务器的性能的好坏和稳定性,对我们系统的整体都有着至关重大的影响。那么我们在考量我们的数据库的优劣,以及我们对数据库服务器规划的好坏该怎么样来进行测试呢。这里我将基于自己多年应用开发和数据库管理的经验上,来谈转载 2010-03-21 11:23:00 · 1423 阅读 · 0 评论 -
MySQL的LOCK TABLES/UNLOCK TABLES
LOCK TABLES/UNLOCK TABLES 句法LOCK TABLES tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE}[, tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE} ...]...UNLOCK TABLESLOCK TABLES 为当前线程锁定表。U原创 2010-03-15 14:37:00 · 4140 阅读 · 1 评论 -
浅谈MySQL慢查询日志及microslow patch(msl patch)
mysql(包括所有5.*系列,5.1.21之前)的慢查询日志默认是以秒为单位的,可以通过set [session|global] long_query_time=1这个最低也就是可以设置到1秒,对于0.5,0.005之类就无能为力了,这时候可以有microslow patch(msl patch)补丁来完成这一工作,这个功能的好处自然不言而喻. 在mysql5转载 2010-03-15 13:07:00 · 1072 阅读 · 0 评论 -
MySQL的表锁问题
在mysql手册里面有一段描述关于lock tables的语法的.LOCK TABLES tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE} [, tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE}] ...UNLOCK TABLESREAD当表不存在转载 2010-03-15 12:58:00 · 2186 阅读 · 0 评论 -
[MySQL] SELECT ... FOR UPDATE 的 Row Lock 與 Table Lock
转自:http://www.neo.com.tw/archives/900 先前介紹過 SELECT ... FOR UPDATE 的用法,不過鎖定(Lock)的資料是判別就得要注意一下了。由於 InnoDB 預設是 Row-Level Lock,所以只有「明確」的指定主鍵(tenfy:不一定需要主键,是索引就ok,并且跟给字段的值的分布也有关系),MySQL 才會執行 Row转载 2010-02-28 22:43:00 · 2473 阅读 · 1 评论 -
MySQL行锁深入研究
做项目时由于业务逻辑的需要,必须对数据表的一行或多行加入行锁,举个最简单的例子,图书借阅系统。假设 id=1 的这本书库存为 1 ,但是有 2 个人同时来借这本书,此处的逻辑为 :Select restnum from book where id =1 ; -- 如果 restnum 大于 0 ,执行 update Update book set r转载 2010-02-28 22:19:00 · 739 阅读 · 0 评论 -
数据库索引杂谈1
●聚集索引结构 在SQL Server中,索引是按B+树结构来进行组织的。聚集索引的数据排列顺序与数据的物理排列顺序相同。 ●聚集索引和非聚集索引的根本区别是表记录的排列顺序和与索引的排列顺序是否一致. 聚集索引表记录的排列顺序与索引的排列顺序一致,优点是查询速度快, 因为一旦具有第一个索转载 2009-03-09 21:42:00 · 1160 阅读 · 0 评论 -
Web开发必知的八种隔离级别
<br />作者 James Leigh 译者 曹如进 发布于 2009年11月11日 上午2时18分 <br /> <br />ACID性质是数据库理论中的奠基石,它定义了一个理论上可靠数据库所必须具备的四个性质:原子性,一致性,隔离性和持久性。虽然这四个性质都很重要,但是隔离性最为灵活。大部分数据库都提供了一些可供选择的隔离级别,且现在许多库都增加了附加层来创建颗粒度更细的隔离。隔离级别应用范围如此之广主要是因为放宽隔离约束往往会使得可扩展性和性能提高几个数量级。<br /> <br />串行一致性是可转载 2010-09-08 13:12:00 · 1156 阅读 · 0 评论 -
Redis详细介绍
虽然Redis已经很火了,相信还是有很多同学对Redis只是有所听闻或者了解并不全面,下面是一个比较系统的Redis介绍,对Redis的特性及各种数据类型及操作进行了介绍。是一个很不错的Redis入门教程。1.介绍1.1 Redis是什么REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。Red转载 2011-12-29 12:03:34 · 1024 阅读 · 0 评论 -
根据DB引擎选择合适的索引进行查询优化
对MySQL DB,有如下的SQL语句:SELECT pk FROM tbl_name WHERE cond = ... ORDER BY time DESC ; 这里pk是我们需要进行select出来的字段,它是主键,因此系统自动为其建立对应的索引结构,where子句下面的选择条件cond字段和order by 的time字段,从广义上可以理解为我们选择记录的过滤条件,为了转载 2009-03-08 20:03:00 · 1065 阅读 · 0 评论 -
关于mysql的错误 - no query specified
Mysql----error:no query specifiedmysql下抛出错误:error:no query specified出现此错误是sql不合法原因:如:select * from abc\G;或者select * from abc;; \G后面不需要再加分号;原创 2012-05-14 23:42:48 · 69140 阅读 · 6 评论 -
MySQL 数据库性能优化之SQL优化
http://isky000.com/database/mysql-performance-tuning-sql转载 2012-04-20 18:15:13 · 696 阅读 · 0 评论 -
MySQL授权系统的五个表
MySQL授权系统是由数据库中的五个表来实现,下面就为您详细介绍这五个和MySQL授权系统相关的表,如果您感兴趣的话,不妨一看。 MySQL服务器的特点之一是,它在控制每个用户行为方面提供了极大的灵活性。例如,我们既可以限制用户访问整个数据库,也可以限制用户访问数 据库中特定的表,或者禁止访问特定表中的特定列。由此看出MySQL服务器在用户授权方面的灵活性。本文将向大家详细介绍MySQL转载 2012-05-06 22:18:46 · 1639 阅读 · 0 评论 -
MySQL新建用户,授权,删除用户,修改密码操作(win)
说明:为了方便演示,本人把mysql安装在window xp下,mysql的版本是5.1.40。安装mysql的homedir是:c:\Program Files\MySQL\MySQL Server 5.1\默认安装后发现对应的datadir(即存放mysql数据库,表,索引的目录)是:C:\/Documents and Settings\All Users\Application Da原创 2012-05-06 22:16:33 · 3922 阅读 · 0 评论 -
InnoDB和MyISAM存储引擎
InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定。下面是已知的两者之间的差别,仅供参考。 innodbInnoDB 给 MySQL 提供了具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (ACID compliant))型表转载 2012-05-03 22:07:59 · 879 阅读 · 0 评论