您的位置:首页 > 数据库

关于事务处理机制和原理、分布数据库设计架构与原理

2009-06-05 22:45 483 查看
今天跟一个大牛讨论上述的原理,下面贴一下聊天记录备忘.

2009-06-05 20:20:14 ⑦零ゞ距离(76159179)
群主做了几年开发了

2009-06-05 20:20:58 杨航(282602809)
好些年了

2009-06-05 20:22:24 ⑦零ゞ距离(76159179)
呵呵,做行业软件还是?

2009-06-05 20:22:45 杨航(282602809)
做男人好些个年了

2009-06-05 20:22:50 ⑦零ゞ距离(76159179)
哈哈

2009-06-05 20:23:18 杨航(282602809)
呵呵

2009-06-05 20:23:51 ⑦零ゞ距离(76159179)
经常做设计不?

2009-06-05 20:24:11 杨航(282602809)
什么设计

2009-06-05 20:24:22 ⑦零ゞ距离(76159179)
架构设计

2009-06-05 20:24:24 杨航(282602809)


2009-06-05 20:24:30 杨航(282602809)
那是得做的

2009-06-05 20:24:50 ⑦零ゞ距离(76159179)
呵呵,有没有什么心得可以交流下

2009-06-05 20:25:08 杨航(282602809)
那得有具体问题

2009-06-05 20:25:18 杨航(282602809)
让我上来就讲,我也不知道说什么啊

2009-06-05 20:26:37 杨航(282602809)
你看看你有什么地方不清楚的,看看我知道不

2009-06-05 20:26:43 杨航(282602809)
哈哈

2009-06-05 20:29:29 杨航(282602809)
上来就真没敢问的

2009-06-05 20:30:24 ⑦零ゞ距离(76159179)
呵呵,我想问一下,你在事务这块是这么处理的

2009-06-05 20:32:09 杨航(282602809)
就是些个需要并行处理的东西用它啊

2009-06-05 20:33:04 杨航(282602809)
比如,转帐
一边+钱,一边-钱,需要同步时

2009-06-05 20:33:08 ⑦零ゞ距离(76159179)
呵呵,我在大批量数据进行插入的时候经常会碰到死锁

2009-06-05 20:33:10 杨航(282602809)
就是需要同步联系的东西

2009-06-05 20:33:26 杨航(282602809)


2009-06-05 20:33:32 ⑦零ゞ距离(76159179)
我发现这个东西是不是需要队列进行等待

2009-06-05 20:33:33 杨航(282602809)
批量时

2009-06-05 20:33:38 杨航(282602809)
就要进行日志核对

2009-06-05 20:33:46 杨航(282602809)
不家事务

2009-06-05 20:33:52 杨航(282602809)
就是先锁表

2009-06-05 20:33:54 杨航(282602809)
在插

2009-06-05 20:33:55 ⑦零ゞ距离(76159179)
比如主从表数据插入更新

2009-06-05 20:34:13 杨航(282602809)
两头插完了后比较缺的部分,在匹配更新

2009-06-05 20:34:27 杨航(282602809)
表数据插如更新?

2009-06-05 20:34:37 杨航(282602809)
msmq

2009-06-05 20:34:42 杨航(282602809)
可以用这个

2009-06-05 20:34:54 杨航(282602809)
msmq里可以在硬盘里存

2009-06-05 20:34:56 ⑦零ゞ距离(76159179)
但是这样会不会影响性能呢

2009-06-05 20:34:59 杨航(282602809)
也是个不错的选择

2009-06-05 20:35:12 杨航(282602809)
你可以用COM+做分布处理

2009-06-05 20:35:25 ⑦零ゞ距离(76159179)
变成一张表一次只能一个人插入数据

2009-06-05 20:35:31 ⑦零ゞ距离(76159179)
其它的人要等

2009-06-05 20:35:34 杨航(282602809)
MSMQ可以调用COM+组件的

2009-06-05 20:35:45 ⑦零ゞ距离(76159179)
回去研究下

2009-06-05 20:35:48 ⑦零ゞ距离(76159179)
知道有这个东西

2009-06-05 20:35:47 杨航(282602809)
你是说这个事啊

2009-06-05 20:35:58 ⑦零ゞ距离(76159179)
com+也在书上见过

2009-06-05 20:36:09 ⑦零ゞ距离(76159179)
但是没有用过,好像不是 太好用

2009-06-05 20:36:13 杨航(282602809)
COM+可以做分布式均衡负载

2009-06-05 20:36:21 杨航(282602809)
application center进行负载

2009-06-05 20:36:38 ⑦零ゞ距离(76159179)
负载的用户最大有多少

2009-06-05 20:37:00 杨航(282602809)
这个是局域网内部多少台机器了

2009-06-05 20:37:15 杨航(282602809)
MSMQ可以根据IP传对象的

2009-06-05 20:37:29 杨航(282602809)
网络之间可以用http传

2009-06-05 20:37:41 杨航(282602809)
可以走内部队列

2009-06-05 20:38:01 ⑦零ゞ距离(76159179)
这样啊

2009-06-05 20:38:04 杨航(282602809)
如果数据量大,你就要考虑分布式数据库了

2009-06-05 20:38:12 ⑦零ゞ距离(76159179)
到时候改造看看

2009-06-05 20:38:22 杨航(282602809)
因为数据库连接是一个瓶颈

2009-06-05 20:38:24 ⑦零ゞ距离(76159179)
我之前做的框架就是有这方面的问题

2009-06-05 20:38:30 ⑦零ゞ距离(76159179)
并发多的时候会出现问题

2009-06-05 20:38:31 ⑦零ゞ距离(76159179)
是啊

2009-06-05 20:38:39 ⑦零ゞ距离(76159179)
数据连接太少了

2009-06-05 20:39:10 杨航(282602809)
关键和你带宽,和数据量以及用户并发都有关

2009-06-05 20:39:36 ⑦零ゞ距离(76159179)
带宽还好了

2009-06-05 20:39:39 杨航(282602809)
它的瓶颈口和 IIS一样

2009-06-05 20:39:47 ⑦零ゞ距离(76159179)
我做的大部分都是内部系统

2009-06-05 20:39:50 杨航(282602809)


2009-06-05 20:40:09 ⑦零ゞ距离(76159179)
分布式的数据库架构要怎么做

2009-06-05 20:40:13 ⑦零ゞ距离(76159179)
大概的模式

2009-06-05 20:40:12 杨航(282602809)
你是没见过满负荷干活的

2009-06-05 20:40:16 ⑦零ゞ距离(76159179)
一直不是很清楚

2009-06-05 20:40:18 ⑦零ゞ距离(76159179)
是啊

2009-06-05 20:40:31 杨航(282602809)
我做过海关的项目,就是满负荷干活的

2009-06-05 20:40:57 杨航(282602809)
这个群里还有个巴特勒船长,也是管理员

2009-06-05 20:41:08 杨航(282602809)
他是和我一起做海关项目的

2009-06-05 20:41:25 ⑦零ゞ距离(76159179)
啊,很想有这个机会

2009-06-05 20:41:45 ⑦零ゞ距离(76159179)
我做的项目很少有满负荷跑得

2009-06-05 20:41:48 杨航(282602809)
海关服务器很多,带宽很足,但报文也能延时半个小时

2009-06-05 20:41:52 杨航(282602809)
有时候一个小时

2009-06-05 20:42:00 ⑦零ゞ距离(76159179)
基本都是很宽松

2009-06-05 20:42:15 ⑦零ゞ距离(76159179)
这个延时是怎么回事

2009-06-05 20:43:02 杨航(282602809)
CPU内存基本都是满的

2009-06-05 20:43:15 杨航(282602809)
16g内存和8核心CPU

2009-06-05 20:43:23 杨航(282602809)
就是业务量大

2009-06-05 20:43:58 杨航(282602809)
大连海关高峰期跑好多报文,每个都有好多逻辑,对数据库操作的

2009-06-05 20:44:00 ⑦零ゞ距离(76159179)
业务量大的时候,你怎么做延时

2009-06-05 20:43:43 ⑦零ゞ距离(76159179)
cpu一般我做的系统就是50%

2009-06-05 20:44:15 杨航(282602809)
恩,那你是没加多线程,所以在50%以下

2009-06-05 20:44:16 ⑦零ゞ距离(76159179)
是对操作进行等待

2009-06-05 20:44:37 ⑦零ゞ距离(76159179)
主要对多线程不是 很了解

2009-06-05 20:44:32 杨航(282602809)
就是msmq里啊

2009-06-05 20:44:52 ⑦零ゞ距离(76159179)
操作员不是 要等死啊

2009-06-05 20:44:58 杨航(282602809)
msmq+com+也有事务性的

2009-06-05 20:45:04 杨航(282602809)
里面也是有所等待的

2009-06-05 20:45:08 ⑦零ゞ距离(76159179)
这个我知道

2009-06-05 20:45:46 杨航(282602809)
数据库的事务操作千万不能过大

2009-06-05 20:45:56 杨航(282602809)
你知道数据库事物的操作原理吗?

2009-06-05 20:46:42 ⑦零ゞ距离(76159179)
很少嵌套事务

2009-06-05 20:46:43 杨航(282602809)
是这样的

2009-06-05 20:46:49 ⑦零ゞ距离(76159179)
不知道事务操作的原理

2009-06-05 20:46:35 ⑦零ゞ距离(76159179)
我一般一个事务里操作的逻辑都比较简单

2009-06-05 20:46:57 杨航(282602809)
事务为了达到同步是这么实现的

2009-06-05 20:47:03 杨航(282602809)
比如银行转帐

2009-06-05 20:47:09 杨航(282602809)
我把钱转给你

2009-06-05 20:47:10 ⑦零ゞ距离(76159179)
上学的时候没有学过

2009-06-05 20:47:14 杨航(282602809)
比如转50元

2009-06-05 20:47:36 ⑦零ゞ距离(76159179)
我只是知道事务是为了保证数据的唯一性和准确性

2009-06-05 20:47:52 ⑦零ゞ距离(76159179)
银行转帐确实是事务的经典案例

2009-06-05 20:48:41 杨航(282602809)
首先是对表,进行加锁,不让别人用
然后执行
我这边 set money=money-50
你那边 set money=money+50
然后解锁

2009-06-05 20:49:07 杨航(282602809)
如果事务中有数据根据的话

2009-06-05 20:49:19 杨航(282602809)
比如在事务里需要select 什么,或insert什么

2009-06-05 20:49:31 杨航(282602809)
都在内存里进行虚操作检查

2009-06-05 20:49:50 杨航(282602809)
然后在加锁进行同步,在解锁

2009-06-05 20:49:55 杨航(282602809)
是为了保证同步

2009-06-05 20:50:10 ⑦零ゞ距离(76159179)
锁定了以后该表是不是不能查询了

2009-06-05 20:50:28 杨航(282602809)
这时,同步的数据select有可能被改变

2009-06-05 20:50:30 ⑦零ゞ距离(76159179)
我记得了如果表被锁定了,查询也不行了

2009-06-05 20:50:34 杨航(282602809)
就造成了脏读数据

2009-06-05 20:50:41 杨航(282602809)


2009-06-05 20:50:45 ⑦零ゞ距离(76159179)
查询的是以前的数据

2009-06-05 20:50:55 杨航(282602809)
看怎么锁

2009-06-05 20:50:59 ⑦零ゞ距离(76159179)
但是如果不能查询肯定是不行的

2009-06-05 20:51:05 杨航(282602809)
有表锁,有字段锁

2009-06-05 20:51:14 ⑦零ゞ距离(76159179)
我现在设置的锁是可以读的

2009-06-05 20:51:16 杨航(282602809)
是根据不同的逻辑使用不同的

2009-06-05 20:51:25 杨航(282602809)
也有可改的

2009-06-05 20:51:35 ⑦零ゞ距离(76159179)
设置字段锁应该在存储过程里锁还是在程序锁

2009-06-05 20:51:37 杨航(282602809)
比如,股票撮合委托成交

2009-06-05 20:52:06 杨航(282602809)
这就需要被select表的行情数据是时时新的,要求能够被更改的

2009-06-05 20:52:15 ⑦零ゞ距离(76159179)
其实我一直都没有搞清楚数据库的锁是这么回事

2009-06-05 20:52:22 ⑦零ゞ距离(76159179)
也不太清楚原理

2009-06-05 20:52:22 杨航(282602809)
因为股票的价格一直是在被变的

2009-06-05 20:52:39 杨航(282602809)
锁,就是不让别人用了

2009-06-05 20:52:48 杨航(282602809)
有什么不理解的?

2009-06-05 20:53:26 ⑦零ゞ距离(76159179)
我知道,但是这个锁有级别的

2009-06-05 20:53:35 ⑦零ゞ距离(76159179)
每个级别的功能好像不太一样

2009-06-05 20:53:40 杨航(282602809)


2009-06-05 20:53:46 杨航(282602809)
要根据你系统设计而定

2009-06-05 20:53:52 杨航(282602809)
比如

2009-06-05 20:53:55 杨航(282602809)
银行转帐

2009-06-05 20:54:10 杨航(282602809)
当我要向你银行转帐时

2009-06-05 20:54:29 杨航(282602809)
就要求操作期间,我们之间的帐户钱数不能被其他程序改变

2009-06-05 20:54:53 杨航(282602809)
否则,比如正在操作能,别人把我钱在期间弄少了,或多了

2009-06-05 20:54:57 杨航(282602809)
那不就乱套了

2009-06-05 20:55:03 ⑦零ゞ距离(76159179)
呵呵,是啊

2009-06-05 20:55:15 ⑦零ゞ距离(76159179)
我现在设计的事务操作没有考虑到这些

2009-06-05 20:55:23 杨航(282602809)
这时,就要对我的帐户进行加缩,对你的帐户加缩

2009-06-05 20:55:24 ⑦零ゞ距离(76159179)
也因为有疑问

2009-06-05 20:55:39 杨航(282602809)
回头你想想,股票交易

2009-06-05 20:56:00 杨航(282602809)
当一个客户想交易时,他希望的能成交的价格是最新的

2009-06-05 20:56:01 ⑦零ゞ距离(76159179)
没买过股票

2009-06-05 20:56:05 ⑦零ゞ距离(76159179)
所以不是很清楚的

2009-06-05 20:56:28 杨航(282602809)
这时候把能变更的那个表给锁上了,不能更新了,这家伙不就老也交易不成功吗?

2009-06-05 20:56:43 ⑦零ゞ距离(76159179)


2009-06-05 20:56:48 杨航(282602809)
买股票原理是这样

2009-06-05 20:56:53 杨航(282602809)
先下委托单

2009-06-05 20:57:13 ⑦零ゞ距离(76159179)
我觉得一般情况是锁记录就可以了

2009-06-05 20:57:18 杨航(282602809)
你是想买,或想卖,想买多少,想卖多少,先在软件里下单

2009-06-05 20:57:29 杨航(282602809)
然后你的数据送到交易锁进行撮合

2009-06-05 20:57:35 ⑦零ゞ距离(76159179)
不需要锁整张表吧

2009-06-05 20:57:45 杨航(282602809)
撮合就是,有匹配你的价格和数量,就进行成交

2009-06-05 20:57:55 杨航(282602809)
没有的就继续等待

2009-06-05 20:58:02 杨航(282602809)
这个不用

2009-06-05 20:58:10 杨航(282602809)
因为表的数据是时时变化的

2009-06-05 20:58:26 杨航(282602809)
不一定什么时候有人想买,什么时候想卖,什么时候出什么样的价格

2009-06-05 20:58:05 ⑦零ゞ距离(76159179)


2009-06-05 20:58:29 杨航(282602809)
都是变动的

2009-06-05 20:58:51 杨航(282602809)
股票大盘的K线图,就是根据那个来的

2009-06-05 20:58:50 ⑦零ゞ距离(76159179)
当我们锁住该记录的时候,其它人应该是无法删除的吧

2009-06-05 20:58:59 杨航(282602809)


2009-06-05 20:59:03 杨航(282602809)
这是有权限的

2009-06-05 20:59:10 杨航(282602809)
你也可以让它删除

2009-06-05 20:59:23 杨航(282602809)
很详细的哦

2009-06-05 20:59:20 杨航(282602809)
这方面资料,你可以找一找

2009-06-05 20:59:54 杨航(282602809)
不过你放心,你能想到的,肯定有解决方案

2009-06-05 21:00:02 ⑦零ゞ距离(76159179)
嗯,谢谢群主

2009-06-05 21:00:09 ⑦零ゞ距离(76159179)
解决了我很多困惑

2009-06-05 21:00:20 杨航(282602809)
呵呵

2009-06-05 21:00:28 ⑦零ゞ距离(76159179)
主要做这行较短

2009-06-05 21:00:31 ⑦零ゞ距离(76159179)
经验太少了

2009-06-05 21:00:36 杨航(282602809)
多长时间了?

2009-06-05 21:00:39 ⑦零ゞ距离(76159179)
缺乏大项目的锻炼

2009-06-05 21:00:40 ⑦零ゞ距离(76159179)
2年

2009-06-05 21:00:46 ⑦零ゞ距离(76159179)
都是做一些小的项目

2009-06-05 21:00:50 杨航(282602809)


2009-06-05 21:01:19 杨航(282602809)
如果你的操作进行了死锁

2009-06-05 21:01:34 杨航(282602809)
不要在程序上挑毛病

2009-06-05 21:01:55 杨航(282602809)
一定要在架构中找瓶颈

2009-06-05 21:02:42 ⑦零ゞ距离(76159179)
是啊,我知道在架构中出了问题

2009-06-05 21:02:33 杨航(282602809)
把瓶颈部分挑出来,进行分布式处理或者等待处理

2009-06-05 21:03:00 ⑦零ゞ距离(76159179)
但是还没有很有效的解决方案

2009-06-05 21:03:39 杨航(282602809)
在大一些的,就要用分割数据库,进行分布式

2009-06-05 21:04:15 杨航(282602809)
就是用一个数据库进行对多个库索引

2009-06-05 21:04:32 杨航(282602809)
多个库的表结构都是一样的

2009-06-05 21:05:05 杨航(282602809)
这样每个库的承载量就小,压力就分散开来了

2009-06-05 21:04:01 杨航(282602809)
分布式数据库道理挺简单的

2009-06-05 21:05:29 杨航(282602809)
不需要

2009-06-05 21:05:45 杨航(282602809)
那还做什么分布式负载均衡啊

2009-06-05 21:05:50 ⑦零ゞ距离(76159179)
不需要的访问的时候怎么获得所有的数据

2009-06-05 21:05:03 ⑦零ゞ距离(76159179)
这样需不需要一个共同的库来保存所有的数据

2009-06-05 21:05:52 杨航(282602809)
那就拿那个库干被

2009-06-05 21:06:11 杨航(282602809)
这个你要考虑用户体验问题

2009-06-05 21:06:34 杨航(282602809)
比如,我想查一条信息

2009-06-05 21:06:57 杨航(282602809)
不是查一条,按一个条件去查

2009-06-05 21:07:06 ⑦零ゞ距离(76159179)
对啊

2009-06-05 21:07:14 ⑦零ゞ距离(76159179)
但是我不并不知道保持在什么库

2009-06-05 21:07:29 杨航(282602809)
通常我们的数据库表里经常进行条件查询的字段,都会做表索引吧?

2009-06-05 21:07:38 ⑦零ゞ距离(76159179)


2009-06-05 21:07:50 杨航(282602809)
比如,你用asp.net

2009-06-05 21:07:53 ⑦零ゞ距离(76159179)
但是放在不同的服务器

2009-06-05 21:07:58 杨航(282602809)
里面进行分页

2009-06-05 21:08:09 ⑦零ゞ距离(76159179)
系统也 没有那么智能啊

2009-06-05 21:08:27 杨航(282602809)
比如查到1000万条数据,你不会真的把1000万条直接给datasource然后databind吧?

2009-06-05 21:08:43 ⑦零ゞ距离(76159179)
没有

2009-06-05 21:08:49 ⑦零ゞ距离(76159179)
当然不会

2009-06-05 21:09:16 ⑦零ゞ距离(76159179)
我的意思是说如果这1000万分布在5个数据库的话

2009-06-05 21:09:22 杨航(282602809)


2009-06-05 21:09:30 ⑦零ゞ距离(76159179)
那我要怎么查询呢

2009-06-05 21:09:49 杨航(282602809)
首先, 字段加索引了,count是很快的

2009-06-05 21:10:04 杨航(282602809)
你一下就知道共多少条数据了吧

2009-06-05 21:10:36 ⑦零ゞ距离(76159179)
一般查询的语句都是针对一个数据库的

2009-06-05 21:10:51 杨航(282602809)
你五个表,都可以是结构一样的

2009-06-05 21:10:50 ⑦零ゞ距离(76159179)
如果分布式的话,查询是怎么写得

2009-06-05 21:11:33 ⑦零ゞ距离(76159179)
我知道,是不是我查询的时候连上所有的服务器,然后count这些表

2009-06-05 21:11:38 杨航(282602809)
难道你想不通吗?

2009-06-05 21:11:44 杨航(282602809)


2009-06-05 21:11:57 杨航(282602809)
首先是知道共多少条数据了吧?

2009-06-05 21:12:39 ⑦零ゞ距离(76159179)
啊,那样我每加一个服务器不是要去改sql语句

2009-06-05 21:12:56 杨航(282602809)
那就是你写程序习惯的问题了

2009-06-05 21:13:40 杨航(282602809)
如果写的够公用化,应该多一台服务器,只是多一个conn的问题

2009-06-05 21:14:15 ⑦零ゞ距离(76159179)
呵呵,不太清楚这个要怎么做

2009-06-05 21:14:30 杨航(282602809)


2009-06-05 21:14:32 杨航(282602809)
我引导你

2009-06-05 21:14:39 杨航(282602809)
首先

2009-06-05 21:15:05 杨航(282602809)
即使得到数据,也应该不是select全部吧

2009-06-05 21:15:14 ⑦零ゞ距离(76159179)


2009-06-05 21:15:14 杨航(282602809)
应该top多少多少吧

2009-06-05 21:15:23 ⑦零ゞ距离(76159179)


2009-06-05 21:15:29 杨航(282602809)
但是一共多少条知道吧

2009-06-05 21:15:43 杨航(282602809)
根据多少条应该知道一共多少页面吧

2009-06-05 21:16:17 ⑦零ゞ距离(76159179)
不是,我的意思是说我每次查询的时候是不是要连上所有的数据库服务器

2009-06-05 21:16:16 杨航(282602809)
知道多少条根据count是很快的吧

2009-06-05 21:16:22 杨航(282602809)
对呀

2009-06-05 21:16:27 杨航(282602809)
得连上啊

2009-06-05 21:16:34 ⑦零ゞ距离(76159179)
那要怎么连

2009-06-05 21:16:43 杨航(282602809)
这样

2009-06-05 21:16:43 ⑦零ゞ距离(76159179)
就是数据操作类要怎么设计呢

2009-06-05 21:16:58 ⑦零ゞ距离(76159179)
让我写的sql可以跟一台一样呢

2009-06-05 21:17:00 杨航(282602809)
你研究研究petshop这个框架好吧

2009-06-05 21:17:03 杨航(282602809)
你听说过吗?

2009-06-05 21:17:07 杨航(282602809)
petshop4

2009-06-05 21:17:11 ⑦零ゞ距离(76159179)
听说过

2009-06-05 21:17:27 ⑦零ゞ距离(76159179)
微软的sqlhelper有用过

2009-06-05 21:17:36 杨航(282602809)
你会不会泛型?

2009-06-05 21:18:19 ⑦零ゞ距离(76159179)


2009-06-05 21:18:26 杨航(282602809)
如果你没研究过泛型,建议研究研究先,可能我说的你没有概念

2009-06-05 21:18:34 杨航(282602809)


2009-06-05 21:18:44 杨航(282602809)
既然会的话,你看看petshop

2009-06-05 21:18:54 杨航(282602809)
应该比我嘴说的明白

2009-06-05 21:19:04 杨航(282602809)
具体有好多细节,我可能说不明白

2009-06-05 21:19:55 杨航(282602809)
既然有了泛型,那么不管你什么数据库过来的,什么表过来的,他是不是都可以给你构造成一个表对象

2009-06-05 21:20:01 杨航(282602809)
这你明白了吧

2009-06-05 21:20:04 ⑦零ゞ距离(76159179)
是的

2009-06-05 21:20:15 杨航(282602809)
你5个库过来的表

2009-06-05 21:20:29 杨航(282602809)
10个库,哪怕是另两个库是其他的数据库

2009-06-05 21:20:43 杨航(282602809)
构造到泛型里,都可以变成一个表

2009-06-05 21:21:04 ⑦零ゞ距离(76159179)
问题是我每次操作好像都只是操作一个连接

2009-06-05 21:21:13 杨航(282602809)
一共十条信息,有可能2条来自sql,有的来自oracle,有的来自其他

2009-06-05 21:21:31 杨航(282602809)
是啊

2009-06-05 21:21:57 杨航(282602809)
但是你可以把得出的表构造到泛型里啊

2009-06-05 21:22:47 杨航(282602809)
我问你

2009-06-05 21:22:55 ⑦零ゞ距离(76159179)
得出的表构造到泛型,是保持表结构,还是信息呢

2009-06-05 21:22:56 杨航(282602809)
有10条记录

2009-06-05 21:23:01 ⑦零ゞ距离(76159179)


2009-06-05 21:23:40 杨航(282602809)
分别要求从access里选5条,和sql里选5条,然后显示在一页里,他们有同样字段数,和字段意义

2009-06-05 21:23:48 杨航(282602809)
这个活你能干出来不?

2009-06-05 21:24:02 ⑦零ゞ距离(76159179)
能,但是我要事先知道

2009-06-05 21:24:27 杨航(282602809)
他们俩不就分布开了嘛?

2009-06-05 21:24:39 杨航(282602809)
明白原理啦?

2009-06-05 21:25:06 杨航(282602809)
而中间怎么选,这就要看你的中间程序怎么写

2009-06-05 21:25:13 杨航(282602809)
就相当于索引怎么索引了

2009-06-05 21:25:18 翔鸟(78255140)
要是排序,怎么办呢?

2009-06-05 21:25:34 ⑦零ゞ距离(76159179)
翔鸟问得好

2009-06-05 21:25:42 杨航(282602809)
字段加的索引,就是排序文件东西

2009-06-05 21:25:52 杨航(282602809)
数据库的原理是2叉数

2009-06-05 21:26:01 杨航(282602809)
折半查找原理

2009-06-05 21:26:04 ⑦零ゞ距离(76159179)


2009-06-05 21:26:25 杨航(282602809)
要不你加索引文件,怎么查东西比一般快

2009-06-05 21:27:12 杨航(282602809)
而索引库,就是拿着他们的索引说事

2009-06-05 21:27:22 杨航(282602809)
拿着他们的索引上其他库里找

2009-06-05 21:27:29 杨航(282602809)
比如,你建立个表

2009-06-05 21:27:40 杨航(282602809)
表里有 姓名,性别,年龄字段

2009-06-05 21:27:47 ⑦零ゞ距离(76159179)
杨兄,你的意思时候说,如果分布式的话,我在操作数据库的话需要去构造一个连接集合,然后遍历集合,逐个连接,然后把得到的数据拼到一起对吗

2009-06-05 21:27:53 杨航(282602809)
你经常用姓名为关键字查找

2009-06-05 21:28:06 杨航(282602809)


2009-06-05 21:28:17 杨航(282602809)
但是中间要有一个索引库
明白吗?

2009-06-05 21:28:16 ⑦零ゞ距离(76159179)
这样我明白了

2009-06-05 21:28:28 ⑦零ゞ距离(76159179)
索引库保存什么呢

2009-06-05 21:28:47 杨航(282602809)
目的是把所有索引字段内容进行大排序

2009-06-05 21:29:03 杨航(282602809)
然后根据索引找到是哪个库,哪行记录

2009-06-05 21:29:24 杨航(282602809)
我问你

2009-06-05 21:29:29 杨航(282602809)
你一个数据库

2009-06-05 21:29:34 ⑦零ゞ距离(76159179)
需要实时更新吗

2009-06-05 21:29:38 杨航(282602809)
一张表,你为什么要建立索引文件

2009-06-05 21:29:45 杨航(282602809)
对呀,得实施更新啊

2009-06-05 21:29:51 ⑦零ゞ距离(76159179)
加速查询

2009-06-05 21:30:07 杨航(282602809)
但你字段它加速查询的原理吗?

2009-06-05 21:30:21 ⑦零ゞ距离(76159179)
更新索引信息,还是把所有的字段数据放到索引库呢

2009-06-05 21:30:23 ⑦零ゞ距离(76159179)
不知道

2009-06-05 21:30:36 杨航(282602809)
你说对了一半

2009-06-05 21:31:02 杨航(282602809)
所谓索引文件,就是排序文件

2009-06-05 21:31:21 杨航(282602809)
比如,你弄个姓名字段,做索引

2009-06-05 21:31:41 ⑦零ゞ距离(76159179)
实际我做索引都是跟着事件探查器的结果让企业管理器去帮我生成

2009-06-05 21:31:42 杨航(282602809)
每当进行增删改时,就要对姓名的索引文件进行一次排序

2009-06-05 21:31:56 ⑦零ゞ距离(76159179)
所以我并不是 很清楚数据库索引需要怎么加

2009-06-05 21:32:01 ⑦零ゞ距离(76159179)
怎么设置才合理

2009-06-05 21:32:25 杨航(282602809)
哦,那个它一般就给你弄个累加id,目的 是唯一标识

2009-06-05 21:32:38 杨航(282602809)
索引文件,就是排序文件

2009-06-05 21:32:49 杨航(282602809)
目的就是为了进行折半查找用

2009-06-05 21:33:08 杨航(282602809)
数据结构你学过吧,折半查找原理就不用我说了吧

2009-06-05 21:33:17 ⑦零ゞ距离(76159179)
没有学过才糟糕啊

2009-06-05 21:33:21 ⑦零ゞ距离(76159179)
我不是科班出身的

2009-06-05 21:33:35 ⑦零ゞ距离(76159179)
数据结构最近才开始看

2009-06-05 21:33:40 杨航(282602809)
[表情]

2009-06-05 21:33:46 杨航(282602809)
原理是这样的

2009-06-05 21:33:29 ⑦零ゞ距离(76159179)
所以很多东西我是不懂

2009-06-05 21:34:14 杨航(282602809)
比如,1-10,10个数字,表示10个数值

2009-06-05 21:34:30 杨航(282602809)
比如我们插入的顺序是这样的

2009-06-05 21:34:39 ⑦零ゞ距离(76159179)
这个我知道

2009-06-05 21:34:44 杨航(282602809)
3 2 4 1 5 7 6 8 10 9

2009-06-05 21:35:04 杨航(282602809)
你知道什么?

2009-06-05 21:35:13 杨航(282602809)
折半查找原理?

2009-06-05 21:35:25 ⑦零ゞ距离(76159179)
在插入数据的时候,数据库会对id字段进行排序查找位置,然后插入

2009-06-05 21:35:29 ⑦零ゞ距离(76159179)
是这样吗

2009-06-05 21:35:35 ⑦零ゞ距离(76159179)
折半查找原理不知道

2009-06-05 21:35:49 杨航(282602809)
我跟你说的是折半查找原理

2009-06-05 21:35:58 ⑦零ゞ距离(76159179)


2009-06-05 21:36:14 杨航(282602809)
比如正常一个字段,我们输入顺序是这样的
3 2 4 1 5 7 6 8 10 9

2009-06-05 21:36:18 ⑦零ゞ距离(76159179)


2009-06-05 21:36:47 杨航(282602809)
正常我们想找到8在哪,你怎么找

2009-06-05 21:36:44 ⑦零ゞ距离(76159179)
然后呢

2009-06-05 21:36:57 ⑦零ゞ距离(76159179)
一个个找

2009-06-05 21:36:58 杨航(282602809)
是不是得挨个验证一下啊

2009-06-05 21:37:03 ⑦零ゞ距离(76159179)


2009-06-05 21:37:06 杨航(282602809)
从头到尾

2009-06-05 21:37:15 ⑦零ゞ距离(76159179)
找到就不找了

2009-06-05 21:37:19 杨航(282602809)


2009-06-05 21:37:33 杨航(282602809)
这是10个数

2009-06-05 21:37:39 ⑦零ゞ距离(76159179)


2009-06-05 21:37:40 杨航(282602809)
1000万个数呢?

2009-06-05 21:37:45 ⑦零ゞ距离(76159179)
不行

2009-06-05 21:37:50 ⑦零ゞ距离(76159179)
这样就太慢了

2009-06-05 21:37:50 杨航(282602809)
是不是需要好长时间?

2009-06-05 21:37:53 ⑦零ゞ距离(76159179)


2009-06-05 21:37:59 杨航(282602809)
但你看这样

2009-06-05 21:38:07 杨航(282602809)
3 2 4 1 5 7 6 8 10 9
对他们进行排序

2009-06-05 21:38:18 杨航(282602809)
1 2 3 4 5 6 7 8 9 10

2009-06-05 21:38:30 杨航(282602809)
这是他们的顺序吧

2009-06-05 21:38:33 ⑦零ゞ距离(76159179)


2009-06-05 21:38:44 杨航(282602809)
排序顺序

2009-06-05 21:39:08 杨航(282602809)
我们应该很快就知道这是10条数据

2009-06-05 21:39:13 杨航(282602809)
这个没错吧

2009-06-05 21:39:31 ⑦零ゞ距离(76159179)


2009-06-05 21:39:48 杨航(282602809)
10条数据,10个位置

2009-06-05 21:40:04 杨航(282602809)
折半原理是除2比较大小

2009-06-05 21:40:14 杨航(282602809)
10/2=5吧

2009-06-05 21:40:41 ⑦零ゞ距离(76159179)


2009-06-05 21:40:43 杨航(282602809)
我用8与5这个位置上的数字比较

2009-06-05 21:40:49 杨航(282602809)
发现,大了

2009-06-05 21:40:55 杨航(282602809)


2009-06-05 21:41:06 ⑦零ゞ距离(76159179)
然后呢

2009-06-05 21:41:24 杨航(282602809)
那就很快判断它在5678910之间

2009-06-05 21:41:29 ⑦零ゞ距离(76159179)


2009-06-05 21:41:29 杨航(282602809)
而不是12345之间吧

2009-06-05 21:41:33 ⑦零ゞ距离(76159179)


2009-06-05 21:41:45 杨航(282602809)
然后5-10之间,中间的数是什么?

2009-06-05 21:41:57 ⑦零ゞ距离(76159179)
8

2009-06-05 21:42:09 杨航(282602809)
拿8比较,不就命中了嘛

2009-06-05 21:42:13 ⑦零ゞ距离(76159179)


2009-06-05 21:42:16 ⑦零ゞ距离(76159179)
明白了

2009-06-05 21:42:19 ⑦零ゞ距离(76159179)
谢谢群主

2009-06-05 21:42:22 ⑦零ゞ距离(76159179)
回去再聊

2009-06-05 21:42:24 杨航(282602809)
这个数量级越大

2009-06-05 21:42:30 ⑦零ゞ距离(76159179)


2009-06-05 21:42:29 杨航(282602809)
越显得块
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐