首 页 | 产品大全 | 采购参考 | 厂商专区 | 渠道商情 | 商 城 | 二 手 | Internet服务 | 社 区
赛贝斯软件(中国)有限公司北京总部
 如何成为Myprice加盟厂商
公司首页 公司新闻 产品信息 技术支持 驱动下载 使用手册 解决方案
该厂商统计信息
该厂商目前得分:0
技术支持指数:0
 参与评论人数:1
公司旗下品牌
SYBASE/赛贝斯
经营范围
>>数据库软件
>>开发软件
资源下载
>> 产品驱动下载
>> 解决方案下载
>> 使用手册下载
网友互动
>> 我要向该厂商提问
>> 查看全部在线问题
联系方式
厂商电话:010-68568488
厂商网址:
http://www.sybase.com.cn
E_mail :给厂商发送Email
 技术支持  给厂商技术支持打分 
常见问题  
 
  ◇  全部SYBASE/赛贝斯
多个应用程序或一个应用程序的多个实例可以同时访问同一个数据库文件吗?
答案:多个进程可同时打开同一个数据库。多个进程可以同时进行SELECT 操作,但在任一时刻,只能有一个进程对数据库进行更改。

  SQLite使用读、写锁控制对数据库的访问。(在Win95/98/ME等不支持读、 写锁的系统下,使用一个概率性的模拟来代替。)但使用时要注意: 如果数据库文件存放于一个NFS文件系统上,这种锁机制可能不能正常工作。 这是因为 fcntl() 文件锁在很多NFS上没有正确的实现。 在可能有多个进程同时访问数据库的时候,应该避免将数据库文件放到NFS上。 在Windows上,Microsoft的文档中说:如果使用 FAT 文件系统而没有运行 share.exe 守护进程,那么锁可能是不能正常使用的。那些在Windows上有很多经验的人告诉我: 对于网络文件,文件锁的实现有好多Bug,是靠不住的。如果他们说的是对的, 那么在两台或多台Windows机器间共享数据库可能会引起不期望的问题。

  我们意识到,没有其它嵌入式的 SQL 数据库引擎能象 SQLite 这样处理如此多的并发。SQLite允许多个进程同时打开一个数据库, 同时读一个数据库。当有任何进程想要写时,它必须在更新过程中锁住数据库文件。 但那通常只是几毫秒的时间。其它进程只需等待写进程干完活结束。 典型地,其它嵌入式的SQL数据库引擎同时只允许一个进程连接到数据库。

  但是,Client/Server数据库引擎(如 PostgreSQL, MySQL, 或 Oracle) 通常支持更高级别的并发,并且允许多个进程同时写同一个数据库。 这种机制在Client/Server结构的数据库上是可能的, 因为总是有一个单一的服务器进程很好地控制、协调对数据库的访问。 如果你的应用程序需要很多的并发,那么你应该考虑使用一个Client/Server 结构的数据库。但经验表明,很多应用程序需要的并发,往往比其设计者所想象的少得多。

  当SQLite试图访问一个被其它进程锁住的文件时,缺省的行为是返回 SQLITE_BUSY。 可以在C代码中使用 sqlite3_busy_handler() 或 sqlite3_busy_timeout() API 函数调整这一行为。

此FAQ对您有帮助么?[ | ] | 收藏
 
访问赛贝斯软件(中国)有限公司北京总部官方网站 | 访问IT价格网( Myprice.cn )