- 论坛徽章:
- 0
|
原帖由 grizzly 于 2007-4-21 09:24 发表
(1)"很多接口如JDBC都有提供啊,也有第三方软件支持啊。"你的意思是说JDBC提供一个pool(包含M个进程),M小于用户最大许可并发数目。是这样吗?
(2)对于thread和process的creation on modern systems,我可能看到的都是古董文献了,还是有一定差别的,另外这个创建的负担通常也可以说是一次性的,更加经常的负担是进程切换的开销。我感觉能解释过去的地方是:似乎线程可以不用付出更多的交换,但是transaction Manager并不是总能使得某个线程被I/O阻塞,其他线程就能够跑的欢。结局可能仍然是需要将进程切换。不知道我的想法是对是错,或者还有更好的解释。
(3)是什么原因使得postgresql的scale性能高过mysql呢?和进程的模型有没有关系?有,是怎么一回事儿?(mysql目前还每有完整的Transaction Manager)
(4)进程模型有利资源独立,资源独立和保护,到底保护了什么?
谢谢二楼的回答。
1. 因为数据库差异性, 连接数据库时候, 首选使用odbc, ole db, jdbc标准进行操作. 使用标准的scalar functiong, 元信息进行操作. 但是这些操作更好的办法通过"中间件"完成. "中间件"近几年的发展还是相当不错.
2. mysql 5已经支持事务了, 而且对于分布式事务支持的相当到位.
3. 关于进程模型, 线程模型, 裸设备. postgresql官方网站说: 目前没有足够的证据, 说明带来的性能提升. 而且, 大部分操作系统, 不能有效保护线程的资源, 一个进程内, 某个线程的崩溃会造成数据库整个垮掉. 而采用多进程模型, 可以有效降低这种崩溃带来的负面影响.
4. 性能的衡量有时候很复杂, 因为各种数据库使用不同事务处理算法, postgresql和oracle都使用了并发版本控制技术, 加上不同数据库的缓冲区策略, 数据库对象锁粒度等都会影响到实际运行效果. 因此, 数据库设计和数据库调优, 都是非常复杂与困难的事情. |
|