主从-分表数据库优化思想

来源:互联网 发布:python 代码能加密 编辑:程序博客网 时间:2024/06/03 09:19


作为了解需要知道主从服务器的模型的:

今天想了这个问题:我做的模块不需要查询只是insert和update.而search操作由其他模块做。那么我想提高写入的性能又不影响查询的性能,怎么办。。。于是想到之前做过的Handlersock插件来做些提升。

myisam的查询性能比innodb性能好:不支持事物操作

innodb的写入要比myisam性能好:支持事物;无索引

事物:一连串的保证原子性的操作语句,如果有一句运行失败,已经运行的命令将会回滚。要么全部成功,要么一点不动。在编程时候体现在把这组命令写在一起用特殊符号括起来即可)

所以一般:用myisam作为slave库,用innodb作为master库

那也顺路记录一下主从数据库的设计模式:

可以一主多从这样设计:像基金服务一样,插入操作少,查询操作非常多。那就分成多个从机,从机只负责查询工作。

高可用:像银行有时候升级期间只提供查询功能而不提供存入和提取操作。

正如我猜测的一样:

1:主从数据库保持主从数据是一致的(主从相互复制)

2:可以实现:主数据库单方面为写入数据库做优化;从数据库单方面为查询做优化。

3:可以往主库insert从从库search。(主服务器的查询操作交给从服务器,从服务器查询操作交给主服务器)

优势:

1:实现负载均衡: 体现在把数据库的写和读分开在不同服务器上

2:高可用:主机坏了还有从机可以直接顶上来;支持更大并发

3:备份 (从服务器要求硬盘是主服务器上至少2倍大小)

主从数据库的同步如果要求频率很高的话,要求的带宽等要求比较高,同步频率较低的话数据操作就会不一致。这是需要根据需求和环境具体协商。

数据库的复制是单向的:只能从主数据库向从数据库更新,也就是说从数据库上更新的任何数据都会被主库刷掉。一般从库上接受到的客户端更新数据请求都会自动分配给主库操作。

分表的思想:

分表意思是按表中字段或者客户端活动区域范围来划分:

例如按名字划分:从a-e开头的分到名为name1表,f-j开头的分到name2表。因为这样分完之后一个庞大的数据表信息就被切成一个个小块的表,这样客户端查询就不需要查询那么庞大的数据量只查询小块表就可以而达到优化查询效果。

例如按区域分:就像很多知名公司百度,搜狐等等。服务器有N多多多个,每个区域都会有服务器。那么每个区域的服务器就管理属于这个区域的数据请求。当然数据都是一样的,只是每个服务器都被设置成区域管理模式。而且也会根据查询信息的热度去优先过滤这些个信息。把数据库的数据关联起来就像一个非常非常庞大的网!!

你有木有发现你网页上显示的广告都是你最近浏览的信息?有木有发现网购小窗口都是你最想浏览过的商品,而且就算清楚了cookie也完全没有影响。

【mongodb据说有bug,会丢数据    redis记录字符内容也会出错,一般用于计数】

0 0
原创粉丝点击