IndexedDB 性能和 IndexedDB 与 WebSQL 性能比较

2023-11-22

WebSQL 和 IndexedDB 都是用于在 Web 浏览器中访问(CRUD)底层嵌入式数据库的 DB API。如果我没猜错的话,这就像用于访问(CRUD)任何客户端服务器数据库(如 Oracle 等)的 SQL(在许多情况下,同一浏览器上都支持 WebSQL 和 IndexedDB)

  1. 那么,这是否意味着 WebSQL 和 IndexedDB 都访问(CRUD)相同的底层嵌入式数据库,如果是这样,那么它将在所有 Web 浏览器上具有相同的性能!
  2. 但我认为事实并非如此,那么这是否意味着网络浏览器将拥有多个底层嵌入式数据库?为什么同一个浏览器中应该有2个底层嵌入式数据库?

由于WebSQL和IndexedDB是API,因此这意味着WebSQL和IndexedDB的性能并不完全正确(因为它们更像查询/访问语言),但它很大程度上取决于底层嵌入式数据库的性能。而且,根据谷歌的说法,LevelDB 比 SQLite 更快

  1. 难道说重要的不是WebSQL和IndexedDB之间的性能差异,而是底层嵌入式数据库的性能差异?
  2. IE、Chrome、Android浏览器的底层嵌入式数据库是什么?我在网上找不到此信息,有人找到或编译过吗?

为了解决你的第一个问题,WebSQL 从未在 Internet Explorer 或 Firefox 中实现(http://diveintohtml5.info/storage.html, http://caniuse.com/#feat=sql-storage)。就剩下 Chrome 和 Safari 的“大浏览器”而言,它们都是脱胎于 WebKit 的(尽管自 v28 以来,Chrome 一直在 WebKit 的一个分支上运行,称为“Blink”)。过去,这两种浏览器都使用 SQLite 作为 WebSQL 和 IndexedDb 的底层数据库,但 Chrome 将 IndexedDb 从 SQLite 切换到 LevelDB。

为了回答你的第二个问题,Chrome 使用两种不同的底层数据库技术:

WebSQL -> SQLite

IndexedDb -> LevelDB

我怀疑他们将 WebSQL 保留为 SQLite,因为他们知道它有效。 WebSQL 现在已被弃用,并且在某个时候它将被删除,那么为什么他们要花时间将其移植到 LevelDB。

在WebSQL/IndexedDb与底层数据库性能之间的性能方面,从iOS Safari上的经验来看,IndexedDb和WebSQL都使用SQLite数据库,但它们在底层数据库的构建方式和执行方式上存在很大差异。在我的测试中,我发现与 iOS8 中 Safari 上的 IndexedDb 相比,WebSQL 在执行 1000 个简单数据库插入时速度快了一倍。

关于你的最后一个问题,我发现了这一点:

For IE:

WebSQL -> 不支持

IndexedDB -> 可扩展存储引擎

对于火狐浏览器:

WebSQL -> 不支持

IndexedDB - > SQLite

对于Safari:

WebSQL -> SQLite

IndexedDB - > SQLite

对于 Chrome:

WebSQL -> SQLite

IndexedDB -> LevelDB

(来源:WebKit 项目,https://bugzilla.mozilla.org/show_bug.cgi?id=837141, http://www.aaron-powell.com/posts/2012-10-05-indexeddb-storage.html)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IndexedDB 性能和 IndexedDB 与 WebSQL 性能比较 的相关文章

  • 可以使用两个独立的 SQLite 数据库吗?

    我有一个 sqlite 数据库 其中存储用户定义的信息和用户只读的信息 我觉得将来可能需要修改只读信息 并且我不想进行整个数据迁移 有没有一种方法可以使用单独的 sqlite 数据库来存储只读信息 该数据库可以轻松替换 如果是这样 您能否就
  • 浏览器显示“已阻止摄像头以保护您的隐私”

    浏览器说 阻止摄像头以保护您的隐私 我的项目包括使用用户摄像头 当我从本地主机访问应用程序时 摄像头工作正常 但是当通过 IP 地址访问时 浏览器默认阻止摄像头和其他资源 我如何允许它们用于我的应用程序 我的应用程序适用于将使用 IP 地址
  • 我是否需要安装 SQLite 才能使 SQLiteJDBC 正常工作?

    我想我只是没有 明白 如果我的计算机上尚未安装 SQLite 并且我想编写一个使用嵌入式数据库的 Java 应用程序 并且我将 SQLiteJDBC JAR 下载 导入到我的项目中 那么这就是我所需要的吗 或者 我是否需要先安装 SQLit
  • PC上同一浏览器的多个版本

    我的机器上运行的是 Windows 7 我安装了以下网络浏览器 Opera 谷歌浏览器 Safari Windows 版本 火狐3 6 IE 8 我正在本地 IIS Web 服务器上进行一些开发 需要跨浏览器测试我的 net Web 应用程
  • 使用 sqlite 离线存储数据的 Web 表单应用程序

    我有一个 asp net Web 表单应用程序 它在远程服务器上使用 sql server 2005 所有控件均使用 linq to sql 绑定 我正在尝试提供完整的离线功能 所以我想知道是否可以像 sql server db 一样创建一
  • Android浏览器上的Web应用程序宽度问题

    所以到目前为止我只在 Android 浏览器上遇到过这个问题 基本上我的网站几乎一直运行良好 而且我还没有在 Dolphin Opera 或 Skyfire 上看到这个问题 但偶尔当我从手机主屏幕之一上的书签重新打开 Android 浏览器
  • 与 SQL 中的 IN 运算符相反

    我怎么能做相反的事情 换句话说 选择所有姓氏不是 Hansen 或 Pettersen 的人 WHERE lastname NOT IN Hansen Pettersen 请参阅 IN 和 NOT IN 运算符 部分SQLite 所理解的
  • 在 Web 浏览器中禁用 F5 [重复]

    这个问题在这里已经有答案了 可能的重复 禁用浏览器的后退按钮 https stackoverflow com questions 961188 disable browsers back button 如何禁用浏览器上的 F5 刷新 htt
  • Qt:如何连接到 SQLite?

    我安装了 SQLite3 解压到 c sqlite 创建了一个数据库 c sqlite mzsales 现在我试图在 QTableView 中显示其内容 QSqlDatabase db QSqlDatabase addDatabase QS
  • Windows 7 x64 上的 Ruby on Rails SQLite 问题

    当我尝试做的时候db create使用 Windows 7 x64 在具有此数据库配置的 sqlite 数据库上 development adapter sqlite3 database db development sqlite3 tim
  • 点击浏览器后退按钮时如何刷新 ASP .NET MVC 页面

    我刚刚发现 当我单击任何 ASP NET MVC 页面上的浏览器后退按钮时 没有任何反应 并且页面不会更新 并且只有当您单击 F5 时才会更新 主要问题是我对页面的 DOM 进行了一些更改 即添加表格行 选择单选按钮等 当我通过点击浏览器后
  • SQLite (Android):使用 ORDER BY 更新查询

    Android SQLite 我想要在 myTable 中的其他行之间插入行在android中使用SQLite 为此 我尝试增加从第 3 行开始的所有行的 id 这样 我就可以在位置 3 处插入新行 myTable 的主键是列 id 表中没
  • 如何在附加的 sqlite 数据库中创建外键?

    我正在尝试创建一个 sqlite3 数据库作为模拟生产环境的测试环境 由于生产的设置方式 表处于多个模式中 我已经在 DBIx Class 中设置了类 使用 schema gt storage gt dbh do将数据库与架构附加在一起 并
  • Flutter:将字符串转换为 Map

    我正在使用 SQFlite 在本地存储数据 我有一个表 其中有一个名为 json 的字段 该字段的类型为 TEXT 并存储转换为字符串的 json 例如 name Eduardo Age 23 性别男 到目前为止 一切正常 但随后我需要从数
  • SQLite 返回错误的 2013 年周数?

    我有一个简单的 SQL 来计算 SQLite 报告中的周数 SELECT STRFTIME W date column 2009 2012 年的数据是正确的 2013 年我总是得到错误的周数 例如 SELECT STRFTIME W 201
  • 如何使用 CSS 媒体查询检测设备方向?

    在 JavaScript 中 可以使用以下方式检测方向模式 if window innerHeight gt window innerWidth portrait true else portrait false 但是 有没有一种方法可以仅
  • 在android中创建SQLite数据库

    我想在我的应用程序中创建一个 SQLite 数据库 其中包含三个表 我将向表中添加数据并稍后使用它们 但我喜欢保留数据库 就好像第一次安装应用程序时它会检查数据库是否存在 如果存在则更新它 否则如果不存在则创建一个新数据库 此外 我正在制作
  • SQLiteException - 仅发生在某些设备上

    我最近向市场发布了一个应用程序 从开发者控制台来看 我的用户中大约有 1 2 遇到了这个问题 1 2 的比例很小 但人们更倾向于在某些内容不起作用时留下评论 而不是在它起作用时留下评论 这可能会对下载产生负面影响 不幸的是 开发人员控制台仅
  • 如何从 SQLite 获取记录总数

    我正在尝试从 Sqlite DB 获取行的总数 以下是我想要做的代码片段 我不知道我在这里做错了什么 public static int getTotalCount Context context Cursor c null try c g
  • 接近语法错误(代码1)插入Android SQLite

    我正在创建一个通讯录应用程序 用户可以在其中输入姓名 电子邮件地址和号码 我希望将此数据保存在数据库中 但我似乎无法使插入方法起作用 我收到的错误是 android database sqlite SQLiteException near

随机推荐

  • Windows 上的 Cmake 不添加共享库路径(适用于 Linux)

    我在 Linux 上使用 CMake 和 Eclipse 一段时间了 并且一直在处理包含大量可执行文件和共享对象的多个目标项目 我使用源代码构建 在 Linux 上 二进制文件被放入它们自己的目录中 当我在 Linux 上执行此操作时 Ec
  • 如何捕获SQLServer超时异常

    我需要专门捕获 SQL Server 超时异常 以便可以以不同的方式处理它们 我知道我可以捕获 SqlException 然后检查消息字符串是否包含 Timeout 但想知道是否有更好的方法来做到这一点 try some code catc
  • 将表单移至特定屏幕

    我试图弄清楚如何将指定的 System Windows Forms Form 移动到主屏幕以外的另一个屏幕上 我有一个带有可用屏幕列表的组合框 用户可以在其中选择他喜欢的屏幕 并且我的应用程序应该将其窗口之一移动到该屏幕上 我的笔记本电脑上
  • 通过从 Javascript 中的特定日期减去 X 天数来查找日期

    我想通过从 JavaScript 中的特定日期减去 X 天数来查找日期 我的 JavaScript 函数接受 2 个参数 一个是日期值 另一个是需要减去的天数 例如 我将我的参数日期传递为 2009 年 7 月 27 日 将另一个参数传递为
  • C++11:g++-4.7 内部编译器错误

    以下代码 include
  • 在哪里可以找到 Windows mysql 服务器的 my.ini 文件?

    同样的问题一次又一次地重复 我是另一个重复这个问题的人 我已经设置了我的 mysql 服务器 它的位置是 C Program Files MySQL MySQL Server 5 5 但我无法在上述路径中找到 my ini 文件 当我输入命
  • NPM package.json 文件的主要用途是什么?

    我读自here如果人们通过 npm 安装您的项目 则 package json 文件中的依赖项允许人们安装依赖项 最后 dependency字段用于列出所有依赖项 您的项目可在 npm 上找到 当有人安装你的 通过 npm 进行项目 列出的
  • 使用 MVC 属性路由的每个控制器有多个 RoutePrefix?

    通过新的 MVC 属性路由 我知道您可以分配多个Route属性为单个ActionResult 但我正在寻找一种方法来做同样的事情RoutePrefix等级 我有一个控制器 在每个操作中 都应该可以通过三种途径访问 Games Title C
  • 在 UserControl 中使用依赖属性的 wpf 问题

    我制作了一个用户控件 该控件每隔几秒就使用来自串行端口的数据更新一次 这个 UserControl 应该非常简单 由一个用于字段名称的 Label 和另一个包含字段值的 Label 组成 我说它should很简单 但是行不通 它根本不更新
  • 使用 youtube v3 API 检索 youtube 播放列表中的所有视频

    我正在使用 youtube v3 API 检索播放列表的视频并获得 50 个项目 此链接没有任何问题 但视频数量是 100 而我只获得 50 我怎样才能获得接下来的 50 个项目 我试过起始索引但它不适用于 v3 API 任何帮助表示赞赏
  • 使用 CSS 强制纵横比在 Safari 上不起作用

    以下代码在 Firefox 和 Chrome 中运行良好 但在Safari 在 Mac 和 iPad 上测试 http jsfiddle net eFd87 div div img src http farm3 staticflickr c
  • 获取用户 Xbox 成就列表?

    有没有办法从 Xbox 获取用户的成就列表而不处理屏幕抓取等 网站如何喜欢http www trueachievements com做吗 他们绝对不是屏幕抓取 因为他们没有我的 Live ID 凭据 我知道 Xbox LIVE 社区开发者计
  • 如何获取包中 setup.py (setuptools) 中定义的版本?

    我怎样才能获得定义的版本setup py从我的包裹中 对于 version 或其他目的 询问已安装发行版的版本字符串 要在运行时从包内检索版本 您的问题实际上是在问什么 您可以使用 import pkg resources part of
  • 如何在 VSCODE 终端中实现平滑滚动?

    我正在 VSC 中工作并编写 Nodejs 我在长终端输出中遇到滚动问题 如果我使用滑块 在终端右侧滚动滑块会走太多行太快 所以 问题是 我们是否有集成终端中的平滑滚动选项可以轻松地用箭头逐行读取输出 或者我们必须使用另一个外部终端 谢谢
  • 未找到派生类中具有相同名称但不同签名的函数

    我有一个具有相同名称的函数 但在基类和派生类中具有不同的签名 当我尝试在从派生类继承的另一个类中使用基类的函数时 我收到错误 请看下面的代码 class A public void foo string s class B public A
  • JQuery 动画边框而不移动 div

    我想通过首先在 mouseenter 上将其边框加粗 5px 然后在 mouseleave 上将边框减小 5px 来对 div 进行动画处理 棘手的部分是我不希望 div 看起来像在移动 如果您只是对边框进行动画处理 整个 div 看起来会
  • 如何创建接受用户输入的 Siri Intent

    我创建了一个自定义 Intent 其参数如下 我已经捐了 let intent PlayIntent intent color color let interaction INInteraction intent intent respon
  • Silverlight HTTP POST 几个变量,最简单的示例(最少的代码)

    您好 我想将一些数据从 silverlight 发布到网站 我发现了以下内容link它有效 然而 这个例子太复杂了 看得我眼睛疼 另外 Flex 示例更干净 更少的代码 我想说一定有更好的解决方案 供参考 我们发布 2 个变量 字符串 并读
  • 访问 Bottlepy after_request 挂钩中的响应对象

    我有以下网络应用程序 import bottle app bottle Bottle app route ping def ping print pong return pong app hook after request def aft
  • IndexedDB 性能和 IndexedDB 与 WebSQL 性能比较

    WebSQL 和 IndexedDB 都是用于在 Web 浏览器中访问 CRUD 底层嵌入式数据库的 DB API 如果我没猜错的话 这就像用于访问 CRUD 任何客户端服务器数据库 如 Oracle 等 的 SQL 在许多情况下 同一浏览