忏悔录 Day9

数据库应用分为两类,OLTP(Online Transaction Processing,在线事务处理)和OLAP(Online Analytical Processing,在线分析处理) InnoDB一般都用于OLTP,这种应用有如下特点:

用户操作的并发量大

事务处理的时间一般都比较短

查询的语句较为简单,一般都走索引

复杂的查询较少

可以看出OLTP应用对于CPU要求并不高,因为复杂的查询可能需要执行比较、排序、连接等非常耗CPU的操作,这些操作在OLTP的数据库应用中很少发生。因此,可以说OLAP是CPU密集型操作,而OLTP是IO密集型的操作。 为了获得更多内存的支持,CPU必须支持64位的应用。         从InnoDB存储引擎的设计架构上来看,其主要的后台操作都是在一个单独的MASTER THREAD中完成的,因此并不能很好的支持多核的应用。不过新的InnoDB Plugin版本在各种测试下已经显示对多核CPU的处理性能有了极大的提高。所以,CPU支持多核,选择InnoDB Plugin更好,且可以修改参数Innodb_read_io_threads 、 innodb_write_io_threads来增大IO的线程,更充分利用CPU的性能

innoDB会缓存数据、索引在缓存池中,所以,内存的大小对于性能影响很大

所以,在开发应用时,预估“活跃”数据库大小可能会是多少,由此确定服务器内存的大小。         可以通过以下数据判断内存是否达到瓶颈,通常InnoDB缓冲池命中率不应该小于99%        当然,内存足够大,依然会有脏页异步写入磁盘,事务提交写入重做日志文件等IO操作。

可以将多块硬盘组成RAID来提高数据库的性能

或者将数据文件分布在不同硬盘来达到访问负载的均衡

更好的支持随机访问

更新数据需要耗时的擦除操作 所以固态硬盘读写速度不对称,读取速度远快于写入速度。这一点需要好好利用。

增强数据集成度

增强容错功能

增加处理量或容量 常见的RAID组合方式可分为 RAID 0,RAID 1,RAID 5,RAID 10和RAID 50等

(1)RAID 0:将多个磁盘合并成一个大硬盘,不会有冗余,并行IO,速度最快,但是数据不安全,且速度会随边际递减。

(2)RAID 1:两组以上的N个磁盘相互作为镜像,在一些多线程系统中有很好的读取速度,但是写入速度略有降低,除非主磁盘和镜像同时损坏,不然依旧可以继续运行,所以可靠性最高。

(3)RAID 5:是一种存储性能、数据安全和存储成本兼顾的存储解决方案。不做备份,而是把数据和奇偶校验信息分开存储到不同的磁盘,发生损坏时,利用校验信息和剩余数据修复损坏的数据。读取速度与RAID 0相近,但是多了奇偶校验信息,所以写入速度相当慢

(4)RAID 10和 RAID 01:RAID 10 是先镜像再分区。RAID 10读取速度不错,而且比RAID 0有着更高的数据保护性。RAID 01 先分区再镜像,RAID 01比 RAID 10读写速度更快,但也多了不可用的概率

(5)RAID 50:也称为镜像阵列条带,由至少6块硬盘组成,像RAID 0一样,数据备份区成条带,像RAID 5一样,以数据的校验来保证数据安全且校验条带分布在各个磁盘上,旨在提高RAID 5的读写性能。

RAID 10是最好的选择,但是一个磁盘失效时,性能会收到很大的影响。

先将数据放在缓存中,延迟写入磁盘,提高性能,但是需要防止故障时损坏数据。对此,大部分的硬件RAID卡都提供了电池备份单元。

除了linux外 Solaris也是个不错的选择 Windows下需要注意表名不区分大小写

关于忏悔录

忏悔录是我用来忏悔自己的一事无成,激励自己努力向前,督促自己以后要做好,的一系列文章吧,每天有所学,总结下来,可以是一章书本内容,一份感悟,不限内容。

希望自己坚持住,每天一更。