boo*_*oop 12 mysql database sqlite teamspeak
我想建立一个teampeak 3服务器.我可以选择SQLite和MySQL作为数据库.好吧,我通常倾向于"不要在生产中使用SQLite".但另一方面,它是一个teampeak服务器.好吧,让我谷歌这个......我发现了这个:
- 速度
SQLite3比MySQL数据库快得多.这是因为文件数据库总是比unix socket快.当我要求编辑频道时,在MySQL数据库(127.0.0.1)上花了大约0.5-1秒,在SQLite 3上几乎立即(0.1秒).[...]
http://forum.teamspeak.com/showthread.php/77126-SQLite-vs-MySQL-Answer-is-here
我不想开始SQLite与MySQL争论.我只想问:他的论点是否有效?我无法想象他说的是真的.但不幸的是,我不够专业,不能自己回答这个问题.
也许TeamSpeak开发人员在SQLite和MySQL之间的数据库架构方面存在一些重大差异,这解释了速度的巨大差异(我无法想象这一点).
Jos*_*rra 15
在First Access Time将在SQLite中更快地出现
SQLite的访问时间在第一次实例时会显得更快,但这与少数在线用户有关.SQLite使用非常简单的访问算法,其速度快但不处理并发.
随着数据库开始增长,并且同时访问的数量将开始受到影响.服务器处理多个请求的方式完全不同,而且更复杂,并针对高并发性进行了优化.例如,如果正在进行更新,SQLite将锁定整个表,并对订单进行排队.
RDBMS进行了大量额外的工作,使它们更具可扩展性
例如,MySQL即使只有一个用户也会创建一个访问QUEUE,部分锁定表而不是只允许每次执行一次用户,以及其他相当复杂的任务,以确保数据库仍然可以访问任何其他同时访问.
这将使单个用户的连接速度较慢,但在未来,当用户100的在线不负有心人,在这种情况下,单纯的"锁定整个表并执行一个查询每一次"的SQLite的过程将抢去服务器.
SQLite是为了简化和自包含数据库应用程序而制作的.
如果您希望SQLite一次可以在数据库中同时进行10次访问写入,那么您将不希望100个用户应用程序使用SQLite不断地向数据库写入和读取数据.它不是为这种情况设计的,它会浪费资源.
考虑到你的TeamSpeak场景你可能对SQLite没问题,即使对于某些业务来说也没关系,有些网站需要只读数据库,除非在添加新内容时.
对于这种用途,SQLite是一种廉价,易于实现,自包含,完美的解决方案,可以完成工作.
我没有亲自测试过 SQLite 与 MySQL,但很容易在网上找到相反的例子(例如)。你确实问了一个不太虔诚的问题:这个论点有效吗?
首先,论证的本质有些似是而非。Unix 套接字将用于与数据库服务器通信。“文件数据库”似乎是指通信是通过编译接口进行的。在 SQLite 的术语中,它是无服务器的。大多数数据库将数据存储在文件中,因此术语“文件数据库”有点误导。
数据库的性能涉及多种因素,例如:
编译接口会影响其中的第一个和最后一个。没有什么可以阻止无服务器数据库在其他方面表现出色。然而,数据库服务器通常有数百万行代码——比 SQLite 大得多。其中很多都支持额外的功能。其中一些支持改进的优化和更好的算法。
与大多数性能问题一样,答案是根据环境中的数据自行测试系统。无服务器并不是一种自动的性能提升。拥有服务器不会使数据库“更好”。它们是针对不同优化点设计的不同应用程序。
相关的区别在于 SQLite 使用了更简单的锁定算法(简单的全局数据库锁)。
使用细粒度锁定(如 MySQL 和大多数其他数据库服务器所做的那样)要复杂得多,如果只有一个数据库用户,速度也会更慢,但如果您想允许更多并发,则需要使用细粒度锁定。