数据库sql指南总结

来源:互联网 发布:免root的手机数据恢复 编辑:程序博客网 时间:2024/05/20 07:35

数据库sql指南总结

MySQL引擎

一。MyISAM

内存中只缓存索引,不缓存数据;

不支持事务;

只支持表级锁,支持insert操作和select操作并发进行;

适合读多写少的应用,如web;

支持全文索引;

二。InnoDB(事物数据库首选)

索引和数据都可以缓存到内存中;

支持事务;

支持行级锁,可实现更高的并发度;

支持故障恢复;

支持外键约束;

支持4种不同的事务隔离级别;


表的切分

一。垂直切分:

垂直切分就是要把表按模块划分到不同数据库中:一个架构设计较好的应用系统,其总体功能肯定是由多个功能模块所组成的,而每一个功能模块所需要的数据对应数据库中的就是一张表或者多个表。在架构设计中,各个功能模块互相之间的交互点越统一、越少,系统的耦合度就越低,系统各个模块的维护性及扩展性也就越好。这样的系统,实现数据的垂直切分也就越容易

垂直切分的优缺点:

  • 优点

数据库的切分简单明了,切分规则明确;

应用程序模块清晰明确,整合容易;

数据维护方便易行,容易定位。

缺点

部分表关联无法在数据库级别完成,需要在程序中进行;

对于访问极其频繁且数据量超大的表仍然存在性能瓶颈,不一定能满足要求;

事务处理相对复杂;

切分达到一定程度之后,扩展性会受到限制;


过度切分可能会导致系统过于复杂而难以维护。


二水平切分

水平切分可以简单理解为按照数据行的切分,就是将表中的某些行切分到一个数据库,而另外的某些行又可以切分到其他的数据库中。

水平切分的切分标准可以按照数据范围分,比如1-100万一个表,100-200万又是一个表;也可以按照时间顺序来切分,比如一年的数据归到一张表中等;也可以按照地域范围来分,比如按照地市来分,每个或多个地市一个库等;也可以按照某种计算公式来切分,比较简单的比如取模的方式,如根据用户id进行水平切分,可通过对ID2取模,然后分别存放在不同的表中,这样关联时也非常方便。


水平切分的优缺点:

  • 优点

表关联基本能够在数据库端全部完成;

不会存在某些超大型数据量和高负载的表遇到瓶颈的问题;

应用程序端整体架构改动相对较少;

事务处理相对简单;

只要切分规则能够定义好,扩展性一般不会受到限制。

缺点

切分规则相对复杂,很难抽象出一个能满足整个数据库的切分规则;

后期的维护难度有所增加,人为手工定位数据较困难。

应用系统各模块耦合度非常高,可能会对后面数据的迁移切分造成一定的困难。


若切分不合理,会造成数据表的冷热不均现象。


联合切分的优缺点:

  • 优点

可以充分利用垂直和水平切分各自的优势而避免各自的缺陷;

让系统扩展性得到最大化提升。

缺点

数据库系统架构会比较复杂,维护难度更大;


应用程序架构也更复杂。




0 0