经过大量的谷歌搜索后,我一直在想,mysql和sqlite3之间的好处/差异是什么.我主要希望在将我的开发数据库移动到生产数据库时发生减速,尽管我想这主要发生在我的代码中.有谁知道性能上的主要差异是什么?在那儿?或者你能指出一些比较两者的文献?
我希望从你的问题来看,你不是在谈论在开发和生产中使用不同的数据库系统.
如果您在开发和生产中使用不同的DB,请不要.不同的数据库引擎表现不同,会导致出现意外错误.尝试让您的开发系统尽可能接近生产(提示:在VM中运行它)
SQLite和MySQL都是正确上下文中的优秀产品.了解他们的能力.
SQLite的:
使用客户端应用程序运行进程
没有网络功能
因此,查询开销非常低
由于IPC,系统调用和数据复制的次数较少,因此容易查询的速度可能相当快.
非常有限的并发性(我认为它是一个编写器或多个读取器,每个数据库文件)
MySQL的:
更多功能
选择引擎(InnoDB为许多工作负载提供了很好的功能)
更多的存储,备份,还原等控制
具有网络功能 - 允许其在大规模应用中使用
更好的并发性 - InnoDB引擎具有MVCC,这意味着读者不会阻止编写者,编写者也不会阻止读者.即使旧的MyISAM引擎也具有表级锁定,而不是整个数据库的sqlite.
可能是复杂查询的更好的优化者
简而言之,你无法真正比较它们.SQLite作为嵌入式数据库非常流行 - Firefox 3里面有一个.
在SQLite中,您仍然坚持将数据库存储在本地磁盘上(当然,如果可用的话,也可以是网络磁盘).如果要扩展Web应用程序,则可能必须使用基于服务器的数据库,例如MySQL.
SQLite是一个嵌入式数据库引擎,但它在与应用程序相同的过程中运行.MySQL,是一个在自己的进程中运行的数据库服务器.
SQLite不会浪费应用程序服务器进程和数据库服务器进程之间的处理和带宽打包请求.它只是解析请求,找出要做的事情(查询计划),并在SQLite数据库文件上调用fopen()并执行查询.
当您的网站受到大量并发请求的攻击时,MySQL会更好,并且您需要额外的线程和排队来正确地提供所有请求.
如果您的网站每天点击次数超过100000次,或者您的数据库大小不超过约25 GB,则SQLite可能是最好的数据库.SQLite的另一个优点是,在额外的进程或数据库服务器稀缺的情况下,您经常可以轻松使用它.查看http://www.sqlite.org/whentouse.html.
你也可以用SQLite做其他事情.查看http://www.squidoo.com/sqlitehammer以获取有关SQLite的其他见解.