会员

贴心博客(Imblog)

基于`Imcat(贴心猫)+(微样式)Weys`开发

浅谈sqlite与mysql的数据库语法差异

2022-01-06 19:43 学习

本文为CSDN博主「裴一飞」的原创文章 原文链接:https://blog.csdn.net/weixin_35009071/article/details/113204900

浅谈sqlite与mysql的数据库语法差异

由于一些原因,小沃将自己的官方网站从原来的阿里云迁移到了justg的vps上,服务器配置也从原理的1核1G变为了1核512M。虽然服务器性能所有下降,但是毕竟小沃的官网是使用了百度的cdn的,因此应付高并发还是没有什么问题的。考虑到服务器性能的下降,小沃决定做一件一直想做但是又没有做的事情---将网站从使用mysql数据库改为使用sqlite数据库。至于为什么要做这个调整,主要是考虑到置于cdn后的网站并发本来就不可能高,而且sqlite数据库在idle状态下消耗内存是0,对于内存降低的小沃所用官网服务器,还是比较合适的。

由于小沃官网原来连接数据库用的就是pdo,因此从mysql改为sqlite基本没什么难度,下面介绍下mysql与sqlite的语法差异。

1、left join与left out join

在mysql中有内连接,左连接,右连接,交叉连接4种连接,但是sqlite中没有右连接。并且写法有所不同。

可以直接写成out join或是left out join,但是mysql中最长用的left join却无法被识别。

2、不支持md5等加密函数

在mysql中可以直接使用MD5这个函数由数据库帮我们计算,但是sqlite中,这个函数原生不支持。因此最好不要直接使用这个函数。

3、没有NOW()函数,CURRENT_TIMESTAMP也是格林时间的表达方式

当使用datetime类型的时候,常常将默认值设置为NOW()或是CURRENT_TIMESTAMP,但是你会发现,生成的默认时间永远比实际使用晚8小时。因此遇到这个问题,官方的建议是将默认值设置为datetime('now', 'localtime'),具体设置方式如下:create table log(

logtime TIMESTAMP NOT NULL DEFAULT (datetime('now', 'localtime')

)

4、创建表时主键不能用unsigned big int

在mysql中,主键一般会设置为自增长,并且类型使用unsigned big int,但是在sqlite中,要想自增长就必须设置为INTEGER型。

=========================

https://www.cnblogs.com/xinhua219/articles/10243040.html Sqlite和mysql的区别及优缺点

小型嵌入式,跟mysql差不多,但更小,功能也少,属于本地数据库多用于读多写少,100W以下的数据压力不大,不支持分布式。

真正开源的小型嵌入式数据库,支持事务、触发器器 性能至少优于mysql4.1.0 目前已被几乎所有的高级程序开发语言支持 由于可以自定义数据库函数,尤其在php的扩展中可支持全部php函数,其性能可以说是无上限的

“最主要的是没有 Access 的界面” 有很多用php开发的管理工具,与phpmyadmin的界面很相似 我用的是SQLiteManager

SQLite 是一个类似Access的轻量级数据库系统,但是更小、更快、容量更大,并发更高。为什么说 SQLite 最适合做 CMS (内容管理系统)呢?并不是说其他数据库不好, oracle、MySQL、SQLServer 也都是非常优秀的 DBS,只不过他们设计目标不同,特性不同,所以只有更适用某个应用场景,没有绝对的好坏之分。

我归纳的中小型站点的CMS的特点如下:

1、数据量不超过10万

2、日页面访问量不超过10万

3、 一部分网站全部生成静态页面,一部分网站实时查询数据库动态访问

4、 站长不懂技术,不懂得复杂的数据库维护,只会用 FTP 管理网站

5 、个人站点基本上是一个人管理,一般情况下只有一个人在访问后台,没有并发

6、 对数据库来说是读多写少,只有在站长访问后台的时候才会写入

7、 多运行于虚拟主机,大部分PHP主机均同时支持MySQL,小部分PHP主机需要单独购买MySQL,PHP+MySQL的主机价格较PHP主机价格高。(以万网为例:最便宜的PHP空间780元,最便宜的PHP+MySQL的PHP空间1150元)

8、 多数中小站点的HTTP服务与MySQL部署在同一服务器上

SQLite 的优点在中小网站CMS应用场景下表现突出:

1、与MySQL相比,它更彻底的免费,并且没有任何使用上的限制

2、非常小巧,PHP5以上版本中无需任何配置即可支持SQLite

3、无需单独购买数据库服务,无服务器进程,配置成本为零

4、整个数据库存储在一个单个的文件中,数据导入导出备份恢复都是复制文件,维护难度为零

5、读速度快,在数据量不是很大的情况下速度较快,更重要的是:省掉了一次数据库远程链接没有复杂的权限验证,打开就能操作

SQLite的缺点在中小网站 CMS 应用场景下被规避:

1、并发低 动态访问时当访问量不超过10万PV的时候,SQLite 超过 Access 的并发能力已经绰绰有余;生成静态页后更无需考虑数据库的并发问题

2、在大数据量的情况下表现较差 但是中小站点一般情况下数据量不超过10万,而SQlite 在 100 万数据量之下表现还不错,因为省掉了对数据库服务器的远程连接甚至会更快

3、写入较慢 默认配置下的 SQlite 的写入速度比MySQL慢了很多,但是 CMS 应用场景的写入操作较少。在插入新文章的时候基本感受不到慢。集中的写数据库操作只有在安装的时候会出现,不过只出现一次,可以忽略

4、为已有的表加索引较慢 但是在中小站点CMS中不会有这样的需求,可以忽略

5、无法将 MySQL 部署到与前端机不同的服务器上,但是中小站点也没有分开部署的需求

转自:http://blog.51cto.com/ivanzz/1130544

来源:(原创) 编辑:peace 关键词:

    More 心情墙

  • 0 我吹过你吹过的风,这算不算相拥; 我走过你走过的路,这算不算相逢。 某小卫:算,都算!拉走隔离! (from某公众号留言)
  • 0 我的要求并不高… Sqlite一样好, cli命令行一样好, PyQuery一样好, …
  • 25 Win7-64bit + Python-3.7.4: Django-2.2.24 安装失败 ... Django-3.2.9 安装失败 ... Django-2.1.15 安装成功! 为啥 Django-2.2+ 安装失败?
  • 23 文学的力量:鲁迅先生,弃医学文;结果他这业余文学成就比他专业医学成就还高; 李彦宏同志,IT终于疲惫了;也拿起笔写起了书:《智能交通》…
  • 有所为,有所不为,是为华为! 凝心聚力,中华有为!

    22 2019-06-02

  • 2019愿望: 1.多健身少生病;2.学习英语,心理学;3.发布`贴心博客`,`贴心企业网`,`贴心房产网`(部分合作开发)...

    27 2018-12-31

  • 愿与[企业,客户]三方利益达到最佳平衡!

    4 2018-12-16

    More 和平鸽小语

  • 0 HI,2022!今天看到的朋友圈,如无特别忌讳,我一律点赞!
  • 33 如果觉得活得太艰难,那就考虑怎样轻松去死! (笔者此时积极生活,热爱生命;没毛病,无需进精神病医院。)
  • 236 不晒妻娃,那是家庭隐私; 不晒工作,那是商业机密。
  • 26 健康第一,X无止境,努力YY,积极ZZ !
导航
博客文章
便笺墙
家族亲友树
联系我们
地址:银河县太阳镇地球村
电话:135-37****47
邮箱:80893510@qq.com

Copyright@贴心博客(Imblog)

Run:2.558/20.990(ms); 6(sql)/2.372(MB); comm:info/detail; Upd:2022-01-21 18:53:07