数据库数据处理性能提升技术
来源:互联网 发布:淘宝保证金计划不符合 编辑:程序博客网 时间:2024/05/17 16:16
转自:http://blog.csdn.net/dingding_12345/article/details/50474398
一、数据处理性能存在的问题
1、企业的数据都集中存储在数据库中,从海量的数据中查找和定位数据是非常耗时的;
2、数据集中存储后,所有用户都要来访问数据库,当很多用户同时访问数据库时,数据库服务器的负载就非常中。
二、数据处理过程
- 所有处理要由CPU完成,但数据全部存储在磁盘上。CPU和磁盘很不匹配:CPU速度很快,磁盘速度很慢,相差天文数字(106)个数量级;
- 磁盘有不可替代的特质:存储容量大;其上的数据不受系统故障影响;
- 内存速度比磁盘高很多,起到缓冲作用,但其容量比磁盘小很多,其上的数据在发生死机或停电之类的故障时,数据丢失;
- 数据库数据量通常比内存容量大很多;
三、数据库性能度量指标
1、事务吞吐量
单位时间内能够完成事务的数量;
2、响应时间
完成单件事务需要耗费的时间。
两个指标必须相提并论,不能单独来提
四、提高数据库性能的策略
挖掘和利用
- 数据特性
- 硬件特性
- 以及数据访问特性
五、提高数据库性能的方法
与数据库设计有关的方法:
1、排序
2、索引
大块的数据变成了很小的索引(仅2行),缩小了很多很多倍,可以一次
性加载到内存里,迅速地找到想要的行,然后将行数据从磁盘读入内存。
没有索引,则要把大块数据全运输到内存,一个一个地比对,仅只极少的行有用。
创建索引时的注意事项
语法:
正确地任用索引:
- 不要对数据量少的表创建索引。因为读磁盘是以页(8k)为单位进行,如果表数据量只有几个页,索引就没意义。就像很少几页的文章,再给它搞个目录页也没有意义;
- 对长字符串的字段,例如备注字段,不要创建索引,因为压缩比会小;
- 对访问频繁的外键(作为查询条件,或者联接运算),应对其创建索引;
- 对经常作为查询条件、联接运算、排序、分组、UNION,DISTINCT 的字段,对其创建索引;
哈希索引
当往表中添加一行记录时,对要哈希的字段计算哈希值,然后把该记录存储在磁盘空间中磁盘地址为该哈希值的地方。
查询数据行时,用户给出字段值,通过哈希计算,就可发现该记录的磁盘空间地址,直接读到对应的记录,不须要一行一行地去比对;对分布均匀特性的字段,哈希索引可行;例如“学号”字段;
3、连续的磁盘空间
- 磁盘以片段为单位来存储数据;
- 一个文件在磁盘上被划分成多个片段,磁盘选取空闲片段来存储表记录; 如果这些片段散布在整个盘面上,磁头就要反复来回走动,效率低。
处理方式
- 对于表记录,如果连续地存储在一个磁道上,当读数据时,数据就可一个紧挨一个地读到,访问速度就会大大加快;
- 你的计算机使用一段时间后,感觉明显变慢,也是这个道理;
- 你可以做磁盘碎片整理,让每个文件的数据在磁盘上连续存储,这样就克服了磁头在盘面空间中到处来回移动,速度大大加快;
4、分类、聚簇
把关系非常紧密,但位于不同表中的行记录,在磁盘上临近存储。当它们做联接运算时,就能迅速得到结果;
5、内存缓冲
我们知道,我们的钱放在银行最可靠,小偷偷不走,也不会丢失。但是,如果每次用钱时,都到银行去取,很费时间(至少要1小时),效率很低。为了提高效率,我们会一次到银行取2000放在口袋里,要用钱时,马上就可拿到,效率极高。
数据存在磁盘上可靠。访问磁盘也是这个道理,很费时间。可事先把数据缓存在内存中,这样数据访问效率和性能就会极大地提高;
6、日志和磁盘分开存储
- 当日志和数据库配置在一个物理磁盘上时,磁头一会要去数据库区读写要处理的数据,马上又要跳到日志区写日志,接着又要折回数据库区读写要处理的数据。磁头来回长距离倒腾,疲于奔命,
效率极低,性能极差。 - 当配置单独的日志磁盘时,正常运行时,日志具有只写不读的特点,而且是递增,磁头可一个挨一个地写,不用来回移动,性能得到极大提高。
底下的两种是完成封装在DBMS中,对数据库设计者和DBA透明
7、查询优化
查询优化并不明白,待探讨
8、并发执行
- 数据库数据处理性能提升技术
- 数据库数据处理性能提升技术
- 数据库查询性能提升
- 提升数据库性能
- SQLSERVER数据库性能提升
- 数据库性能提升的经验
- 提升数据库查询的性能
- 提升数据库查询的性能
- 提升HBase数据库写入性能
- POSTGRESQL 数据库 性能 提升 技巧
- 提升HBase数据库 写入性能
- 提升你的Java应用性能:改善数据处理
- 提升你的Java应用性能:改善数据处理
- 提升你的Java应用性能:改善数据处理
- 提升你的Java应用性能:改善数据处理
- 提升你的Java应用性能:改善数据处理
- 提升你的Java应用性能:改善数据处理
- JAVA技术提升EJB性能的方法
- Visual format language(1)
- 关于Apple Mac&iOS本机安全
- 机器学习实战笔记 k-近邻算法
- android中获取坐标
- JavaScript--window与document的getComputedStyle()方法的区别
- 数据库数据处理性能提升技术
- 通过jQuery在IE中支持placeholder
- Coursera课程Python for everyone:chapter3
- Lua 从C程序获得Lua变量值
- JDK5.0中JVM堆模型、GC垃圾收集详细解析
- 递推 HDU 2047 阿牛的EOF牛肉串
- Apachetop 实时监测apache服务器运行状况简介
- 王学岗Fragment(三)——带参数
- 蓝桥杯--裁剪格子(DFS)