SQLite,多个应用措施可以同时会见单个数据库文件吗?
多个历程可以同时打开统一个数据库。多个历程可以同时执行SELECT。可是,只有一个历程可以随时对数据库举办变动。 SQLite行使读/写锁来节制对数据库的会见。(在Win95 / 98 / ME下,穷乏对读写锁的支持,而是行使概率模仿。)但请留意:假如数据库文件生涯在NFS文件体系上,则此锁定机制也许无法正常事变。这是由于很多NFS实现城市粉碎fcntl()文件锁定。假如多个历程也许同时实行会见该文件,则应停止将SQLite数据库文件放在NFS上。在Windows上,Microsoft的文档说假如您没有运行Share.exe保卫措施,则在FAT文件体系下锁定也许不起浸染。对Windows有许多履历的人汇报我,收集文件的文件锁定长短常错误的,而且不行靠。 我们知道没有其他嵌入式 SQL数据库引擎支持与SQLite一样多的并发性。SQLite应承多个历程一次打开数据库文件,并应承多个历程一次读取数据库。当任何历程想要写入时,它必需在更新时代锁定整个数据库文件。但这凡是只必要几毫秒。其他流程只是守候作者完成然后继承他们的营业。其他嵌入式SQL数据库引擎凡是只应承单个历程一次毗连到数据库。 可是,客户端/处事器数据库引擎(如PostgreSQL,MySQL或Oracle)凡是支持更高级此外并发性,并应承多个历程同时写入统一数据库。这在客户端/处事器数据库中是也许的,由于总有一个精采节制的处事器历程可用于和谐会见。假如您的应用措施必要大量并发,那么您应该思量行使客户端/处事器数据库。但履历表白,大大都应用措施必要的并发性远低于计划职员的想象。 当SQLite实行会见由另一个历程锁定的文件时,默认举动是返回SQLITE_BUSY。您可以行使sqlite3_busy_handler()或sqlite3_busy_timeout() API函数从C代码调解此举动 。 【编辑保举】
点赞 0 (编辑:河北网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |