mysql在百度之类的大公司中性能
看对数据库的需求的,memsql 确实快,但是加载数据结构慢。memsql 可以兼容MYSQL 。目前国内部分网站已经着手在测试环境使用memsql ,再是使用的时候是没有什么区别的。
MemSQL 提供开发版和试用版,开发版可免费使用,数量限制10G,试用版无限制但只能使用30天。 测试都是开发版,所以无法给出准确答复,不过肯定是有提升的。
他们唯一的区别在于,如果你同时都安装了。连接的时候区别端口就可以了
你可以使用 mysql 的命令行或者是 mysql 的客户端工具连接到 MemSQL,跟连接到 MySQL 的方法一样,例如:
$ mysql -u root -h 127.0.0.1 -P 3307 --prompt="memsql> "
你也可以使用一些图形化的数据库管理工具来连接。
使用 MemSQL 跟使用 MySQL 没有区别:
不过对于吧数据存放在内存里的,我是不建议用的,可以当作暂时但高反问率的数据流存储空间使用。我感觉,和MySQL的memery引擎是类似的。
如何用cimg展示处理过的数据
原理篇
数据存储
我们的目标是做一个可靠的,支持大规模扩展和容易维护的系统。计算机里面有个locality(局部性定律),如图所示。从下到上访问速度越来越快,但存储代价更大。
相对内存,磁盘和SSD就需要考虑数据的摆放, 因为性能会差异很大。磁盘好处是持久化,单位成本便宜,容易备份。但随着内存便宜,很多数据集合可以考虑直接放入内存并分布到各机器上,有些基于 key-value, Memcached用在缓存上。内存的持久化可以通过 (带电池的RAM),提前写入日志再定期做Snapshot或者在其他机器内存中复制。当重启时需要从磁盘或网络载入之前状态。其实写入磁盘就用在追加日志上面 ,读的话就直接从内存。像VoltDB, MemSQL,RAMCloud 关系型又基于内存数据库,可以提供高性能,解决之前磁盘管理的麻烦。
HyperLogLog & Bloom Filter & CountMin Sketch
都是是应用于大数据的算法,大致思路是用一组相互独立的哈希函数依次处理输入。HyperLogLog 用来计算一个很大集合的基数(即合理总共有多少不相同的元素),对哈希值分块计数:对高位统计有多少连续的0;用低位的值当做数据块。BloomFilter,在预处理阶段对输入算出所有哈希函数的值并做出标记。当查找一个特定的输入是否出现过,只需查找这一系列的哈希函数对应值上有没有标记。对于BloomFilter,可能有False Positive,但不可能有False Negative。BloomFilter可看做查找一个数据有或者没有的数据结构(数据的频率是否大于1)。CountMin Sketch在BloomFilter的基础上更进一步,它可用来估算某一个输入的频率(不局限于大于1)。
CAP Theorem
简单说是三个特性:一致性,可用性和网络分区,最多只能取其二。设计不同类型系统要多去权衡。分布式系统还有很多算法和高深理论,比如:Paxos算法(paxos分布式一致性算法--讲述诸葛亮的反穿越),Gossip协议(Cassandra学习笔记之Gossip协议),Quorum (分布式系统),时间逻辑,向量时钟(一致性算法之四: 时间戳和向量图),拜占庭将军问题,二阶段提交等,需要耐心研究。
mysql业务需求对性能的影响
个人觉得,如果有那么大的业务量,单台服务器根本就支撑不起来.并发SQL上万,那样对磁盘的IO是多大的操作啊.在WINDOWS下,有一个很大的问题就是.windows不支持unix://域socket,这个就很限制了mysql的性能.因为就算你在windows下使用127.0.0.1连接,也要通过lo来环回.另外,如果有那么大的并发量,出现瓶径的地方绝对不是tcp连接数,windows下我不知道,linux某个进程打开FD的数量是有限,默认好象是1024,这个可以改,windows下也应该可以该.那么大的并发量,肯定是磁盘IO出现问题.如果真的是在MYSQL出现连接资源不够的问题,你最应该考虑的是你的程序是否出了问题.又或者是你的sql出了问题,导致有线程一直没办法回收,导致没有足够的资源.