>石家庄网站建设网>石家庄网站服务器>石家庄服务器租用>数据库优化方案 免费发布服务器租用信息
广告
热门浏览

数据库优化方案

更新时间:2020-07-18 14:46:01 信息编号:69h4h44c7b270
数据库优化方案
  • 面议

  • intel

  • 刀片式

  • 圣荷寨服务器,美国服务器,菲律宾服务器,韩国高防服务器

分享

详情介绍

服务项目
服务器优化,iis配置,php基本要素,网站维护
面向地区
品牌
intel
服务器类型
刀片式
CPU类型
其它
内存类型
其它
CPU核心
八核
OEM
标配CPU个数
2个
标配硬盘转速
15000转
磁盘阵列
其它
货源类别
现货
结构
2U
硬盘容量
500GB
支持内存容量
16GB
质保
其它
大CPU个数
28个
类型
视频监控系统

数据库优化方案

数据库优化
三方面1,数据存储分区 2,表索引 3,sql语句优化
1,数据存储分区,我们的理财系统,购买产品的用户来自不同的区,考虑到产品购买数量接近上亿条,单纯的为表建立索引不能满足性能的需要,因此交易记录按省份做了列表分区,使不同省的记录存储到不同的数据分区,当查询数据加上省份条件,只会检索对应分区的数据,大大缩小数据检索范围,从而提高查询性能,(备注:每个项目组按照自己项目的实际分区情况举例说明)
分区还有:范围分区(比如按照日期字段建立分区,一个季度或者一个月的数据划分为一个区)散列分区(不分区条件,oracle自动将数据平均分配)复合分区(比如:做了分区后,每个分区再分区)
2.表索引,为建立好分区以后,在分区里面添加索引,进一步提高数据的查询速度,我们的项目里用到的索引比如(客户信息表 姓名建立btree索引,身份证号建立索引,客户编号建立主键,主键自带)(产品表 产品类别建立位图索引) (经常用到的表关联条件建立索引)[备注:按照自己项目建立索引的实际情况举例说明]
索引之所以会提高查询速度,索引有一套立的系统表存储数据与rowid的对应关系(如书的目录),比如btree索引,他是一个树形结构图,有根节点,分支节点,叶子节点,根节点只有一个,分支节点数量不固定由oracle合理分配,分支节点存储数据的范围,终的分支节点下面有叶子节点,叶子节点负责存储具体的值和rowid.比如:根节点存储大于50小于50两个范围,两个支节点,大于50的支节点存储50-60,60-70,大于100等区段,每个区段都有对应的叶子节点,比如大于100的区段下面的叶子节点存储1和对应的rowid等具体数据,1的值即为表中建立索引的列(比如num)的值,当编写sql语句where num=101时,就会通过检索索引表,查询到叶子节点上存储的rowid,然后根据rowid查询对应的数据
避免了对数据表的全表扫描.
当然,索引不是越多越好,索引适合建立在经常作为条件列(即为where之后作为条件的列,包括关联条件),以及order by的列.如果对于增删改查性能要求特别高而查询要求不高的表就不建议建立索引,因为索引降低增删改查效率.
3.sql语句优化1
(1).尽量避免全表查询
(2)避免where子句中字段进行null判断,否则导致全表扫描select id from t where num is null.
尽可能添加not null .备注,描述,评可以设置为null.null需要空间,比如:char(100),在字段建立时空间固定,不论插不插值都是占用100个字符,如果是varchar,null不占空间.可以再num上设置默认值为0,确保表中num列没有null值
Select id from t where num=0
(3)尽量避免where子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行 全表扫描
(4)尽量避免where子句中使用or来连接条件,如果一个字段有索引,一个字段没有,将导致引擎放弃索引而进行全表扫描
Select id from t where num=10 or name=’admin’错误
可以这样:
Select id from t where num =10
Union all
Select id from t where name=’admin’
(5)In 和not in 也要慎用,导致全表扫描如
Select id from t where num in(1,2,3)
对于连续的值能用between就不要用in
Select id from t where num between 1 and 3
大多数用exists代替in
Select num from a where num in(select num from b)
Select num from a where exists(select 1 from b where num=a.num)
(6)如果在where子句中使用参数,会导致全表扫描.因为sql只有在运行时才会解析局部变量,但优化程序不能将访问计划的选择推迟到运行时;他在编译时进行选择.然而,如果在编译时建立访问计划,变量的值还是未知的,因为无法作为索引选择的输入项.如下将进行全表扫描
Select id from t where num =@num
可以改为强制查询使用索引
Select id from t with(index(索引名)) where num=@num
应尽量避免在where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描.如
Select id from t where num/2=100
应该为
Select id from t where num =100*2
(7)尽量避免where 子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描.如
Select id from t where substring(name,1,3) = ‘abc’ -----name以abc开头的name
Select id from t where datediff(day,createdate,’2005-11-30’) = 0
改为
Select id from t where name like ‘abc%’
Select id from t where createdate >=’2005-11-30’ and createdate <’2005-12-01
(7)不要在where 子句中的’=’ 左边进行函数,算数运算或者其他表达式计算,否则系统将可能无法正确使用索引
(8)Update语句,如果只更改1,2个字段,不要update全部字段,否则频繁调用会引起性能消耗,同时带来大量日志
(9)对于多张大数据表的表join,先分页在join,否则逻辑读会很高,性能差
(10)索引固然可以提高相应select 的效率,但同时也降低insert 和update效率,因为insert或update 可能会重建索引,所以一个表好不要超过6个索引
(11)尽量使用数字型字段
(12)尽可能使用varchar/nvarchar代替char/nchar.因为节省空间,查询
(13)不要用select * 要使用select 字段
(14)避免向客户端返回大数据量
(15)美国服务器
---------------------
作者:玖芯科技
来源:玖芯科技
原文:
版权声明:本文为玖芯科技原创文章,转载请附上玖芯科技链接!
本文有救芯科技发布:

石家庄玖芯科技信息技术有.. 8年

  • 服务器租用,服务器托管,网站建设,服务器代维
  • 河北省石家庄市桥西中华南大街380号盛景大厦1层

———— 认证资质 ————

个人认证已通过
企业认证已通过
天眼查未核实
手机认证已通过
微信认证已通过

最近来访记录

  • 北京朝阳网友用iPhone手机一个月前在百度APP访问了本页

相关推荐产品

留言板

  • 服务器优化iis配置php基本要素网站维护圣荷寨服务器美国服务器菲律宾服务器韩国高防服务器
  • 价格商品详情商品参数其它
  • 提交留言即代表同意更多商家联系我
石家庄玖芯科技信息技术有限公司为你提供的“数据库优化方案”详细介绍,包括圣荷寨服务器价格、型号、图片、厂家等信息。如有需要,请拨打电话:18304200733。不是你想要的产品?点击发布采购需求,让供应商主动联系你。
“数据库优化方案”信息由发布人自行提供,其真实性、合法性由发布人负责。交易汇款需谨慎,请注意调查核实。