数据库谈

 现在db的种类越来越多了,常见的oracle mysql sql-server ,db2

postgresql 等等,有出了nosql ,redis mongodb hodoop 等等。。

所谓尺有所长,寸有所短,关键看你对他的认识有多少,能不能把他的优点发挥出来,每种东西都有其和其他不同的地方。适合自己业务场景的,才是好东西。大家好,才是真的好。 

毕竟工具是死的,人是活的,怎么用,还看你自己了。

下面附一个简单的例子。学过mysql的人都知道mysql 是个多engine 的数据库。大多数人觉得innodb 会比myisam 好,但是好在哪里呢? 又说不上来。

其实myisam 也有其特别之处。就是并发插入效率非常高。比innodb 高多了,高的离谱。

文档里面是这样说的

 If a table has no free blocks in the middle of the data file, you can INSERT new rows into it at the same time that other threads are reading from the table.

也就是说,如果一个中间没有被delete过的表,myisam 的插入是非常快的,甚至在有线程进行select 读的时候也可以插入!

你可以创建一个简单的表,然后用vi复制一群insert语句,然后用source试一下,结果也行可能会令你大吃一惊。

本来myisam 的诞生就是用来做olap 的,需要大量数据的快速导入。当然innodb慢的原因并不是单单插入时候获取lock ,而是其本身是clustered index 来组织的。所以插入的时候是直接插在btree 里面的,btree 的插入不可避免的要发生旋转变形一系列复杂变形。所以当然会慢很多。当然,作为为oltp 来设计的,其基于主键的查询,会非常的快!

有些log类型的表,插入较频繁的表,用myisam效果会非常的好!怎么用,真的要看人了。

posted @ 2013-06-26 00:47  过去的我  阅读(209)  评论(0编辑  收藏  举报