初学者请指点!
1、数据库效率上,很多文章提到减少磁盘IO操作,这个磁盘IO操作能否解释一下,那些数据库操作会增加磁盘IO操作
2、在建外键的问题上,如果只是一个用户表userinfo(userid,name)中,userid是主键;另一个订单表order(orderid,userid,ordername)中,orderid是主键,把userid设置为外键,这样在对order表操作时候,插入一个userinfo不存在的userid的记录,是插入不成功对吧?如果做了级联插入,就是在order表中先成功插入一条记录,然后再userinfo表中,自动加一条记录?那userinfo的其他字段值怎么自动填入?
1、数据库效率上,很多文章提到减少磁盘IO操作,这个磁盘IO操作能否解释一下,那些数据库操作会增加磁盘IO操作
2、在建外键的问题上,如果只是一个用户表userinfo(userid,name)中,userid是主键;另一个订单表order(orderid,userid,ordername)中,orderid是主键,把userid设置为外键,这样在对order表操作时候,插入一个userinfo不存在的userid的记录,是插入不成功对吧?如果做了级联插入,就是在order表中先成功插入一条记录,然后再userinfo表中,自动加一条记录?那userinfo的其他字段值怎么自动填入?
解决方案 »
- 怎么查找字符串中的多个人名,在数据库中对应的邮箱?
- PLSQL9.0.2无法链接到Oracle数据库,弹白框!!!
- group by 的问题,急急急
- 用pl/sql developer 向Oracle中插入数据为何要重启pl/sql后才能显示
- 求救,varchar2
- 如何取得执行sql后的表头
- 数字或值错误: 字符串缓冲区太小
- 哪位兄弟有Toad8.0注册版,我找了很久没有,留个地址,谢了!!!!!
- 如何将excel中的数据导入oracle中
- 用户创建问题
- oracle 81存储过程里面如何按照规定的年份进行查询啊?给分的!
- 出现“oracle management server 服务启动后又停止了,一些服务自动停止,如果他们没什么可做的“
或者不要设置外键
或者另外一个字段tempUserId,userid为null
数据库的IO能力,在很多时候会影响到查询的性能,尤其是FTS 的性能,所以对于oracle来说,这会影响到执行计划的选择。
数据库中统计的 physical reads和 IO 不是一个概念,数据库中物理读统计的是 blocks ,而操作系统中是 io requests ,
一次 request 可能是 128k/256k/1024k 等等数据,当然也可能是几十k 或者更少的,取决于数据库的要求。 io request 次数,简单点说是 table blocks / DB_FILE_MULTIBLOCK_READ_COUNT。
暂时我们不考虑File system 中os block不连续的问题(除非经历了大量小文件的创建和删除才可能造成大量os碎片)。数据库的IO的次数和性能,实际上相关因素包括:1: 不同 os + 硬件 ,每次IO 有一个极限值,比如hp unix 极限值 是 256k ,sun 的可能高达 1---8m ,
若 DB_FILE_MULTIBLOCK_READ_COUNT* block_size > 这个极限值自然就被拆分为多于一个的 io request 2: 一次 io request 不能跨越 extent 边界,所以 extent 大小也影响 IO request 3:对于文件系统来说,连续的 block_id 并不意味着连续的 os block block,这会影响到读磁盘的效率。4:对于 disk array 等设备类说,对于做了 raid 的设备来说,对于很多存储设备来说 , IO 在从 os 抵达这里的时候又重新做了优化重整的 ,还存在cache的,这样代价就不好评估了二.
外键是为保证数据的完整性而设,最直观的作用是防止非法数据录入,就是说录入外键数据时必须在它所属的主表中存在相应数据,如果录入空字符或其他数据会报错。
数据库并不存在级联插入,你那样做只会报错.