使用(顺序)GUID 是数据库生成 ID 的唯一可行替代方案吗?

2024-03-12

我们正在使用 Entity Framework 5 Code First 方法将 MS-Access 数据库迁移到 SQL Server Compact 4.0。我们发现使用数据库生成的整数 ID 非常慢,更糟糕的是,延迟随着数据库的大小呈指数级增长。这使得使用 Identity 列变得不可能,并且在与实体框架配合使用的 SQL Server Compact 4.0 中似乎此功能的实现很糟糕。

因此,我们进行了一些测试,发现使用客户端生成的密钥将操作插入速度至少提高了 20 倍,插入的指数增长消失了。

现在我们正在寻找生成客户端 ID 的最佳方法。使用 GUID 似乎是最安全的选择,但我读到这会对读取操作产生负面影响。是否有使用客户端生成的自动递增整数的策略?

编辑: 我将进一步调查导致该问题的根本问题。同时我真正的问题可以得到解答吗? :-)

编辑2: 令人恼火的是,似乎没有人相信在 EF 和 SQL Server Compact 4.0 中使用自动 id 速度如此之慢的说法。我已经发布一个单独的问题 https://stackoverflow.com/questions/14768394/exponentially-deteriorating-performance-on-inserts-in-sql-server-compact-4-0-tab关于这一点,应该有一个易于复制的概念证明。


如果您使用 EF 移动大量数据,那么您就错了。使用 ADO.NET,例如 BULK COPY 方法(对于 SQL CE,使用 SqlCeUpdateableRecord)。您可以使用我的 SqlCeBulkCopy 库来节省一些编码工作。

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

使用(顺序)GUID 是数据库生成 ID 的唯一可行替代方案吗? 的相关文章

  • 如果表不存在,如何使用 Derby Db 创建表

    我是新来的apache derby我似乎无法工作 CREATE TABLE IF NOT EXISTS table1 可以实现MySql等等我得到了 Syntax error Encountered NOT at line 1 column
  • 具有通用存储库、依赖项注入和 SoC 的 EF6 Code First

    经过大量阅读和尝试之后Entity Framework最新稳定版本 6 1 1 我读到了很多关于是否使用存储库的矛盾EF6 or EF一般来说 因为它是DbContext已经提供了一个存储库并且DbSet the UoW 盒子外面 让我首先
  • 如何使用SQL Server CE的动态连接字符串?

    我在 Windows 应用程序中使用 SQL Server CE 4 0 并使用实体框架创建它的模型 它工作正常 但我的问题是它没有构造函数来更改连接字符串 并且默认情况下它从app config file using var Contex
  • 在方法中使用 IncludeMultiple

    我正在使用 Ladislav Mrnka 的扩展方法 public static IQueryable
  • 具有数百万行的日志表。怎么办?

    我有一个包含数百万行的日志表 我正在考虑将数据分成多个表 即 LoginHistory ExceptionHistory PaymentProcessingHistory 等 在采用包含许多行 而不是列 的大型表并创建多个表时使用的术语是什
  • 在 RDBMS 中何时使用三元关系而不是聚合?

    我想知道什么时候可以表示实体集和三元关系之间的关系 我明白聚合的好处 但是如果实体集和关系集之间的关系中没有属性 为什么还要使用聚合呢 例如 一名研究生 具有学生编号和姓名 正在从事一个项目 具有 pid 开始日期和结束日期 并且学生从事的
  • 如何使用 .schema 文件在 sqlite3 中创建 DB 文件

    我们的客户向我们提供了一个名为db schema 现在有一个命令可以用来运行这个文件来创建一个 dbsqlite3 中的文件 我可以做到这一点而不必输入中提到的所有查询吗db schema file 请帮忙 谢谢 如果该文件仅包含格式正确的
  • 始终保持数据库连接打开可以吗?

    我在业余时间从事单用户桌面数据库应用程序之类的工作 并且我总是不确定我所做的设计选择 现在 就目前情况而言 每当用户想要与数据库 这是一个本地 SQLite 数据库 因此通常只有一个用户一次看到它 交互时 应用程序就会创建一个新连接 执行它
  • 获取ADO.NET中的参数前缀

    我想使用列名作为参数基于列列表生成多个 SQL 语句 Edit C var columns new string COL1 COL2 var tableName TABLE 1 var prefix TODO get this from t
  • 使用 Entity Framework 6 强制两列之一不为 NULL

    我有一个如下表 Table tblStore public class Store Key DatabaseGenerated DatabaseGeneratedOption Identity public Guid Id get set
  • 如何检查 postgres 的 psql 是否自动提交

    我使用的是 postgres 9 5 如何检查自动提交是否打开或关闭 我试过SHOW AUTOCOMMIT我在哪里得到的ERROR unrecognized configuration parameter autocommit 然后我做了一
  • MySql:将多项选择数据存储在数据库中

    我的表单中有一个复选框列表 用户可以选择其中任何一个 也可以选择全部 认为用户选择他感兴趣的运动类型 我需要最好的数据库结构来存储这个用户选择 这样 将来我就可以获得所有这些数据 我想 我无法将每个 用户 ID 运动 选择作为新行存储在数据
  • SQLSTATE[HY000] [2002] 连接尝试失败,因为连接方在一段时间后没有正确响应,

    我尝试连接 2 个数据库Laravel 5 6项目 但我遇到这样的错误 SQLSTATE HY000 2002 连接尝试失败 因为连接方在一段时间后没有正确响应 或者由于连接的主机未能响应而建立的连接失败 SQL 从中选择 mt merch
  • 类型 '' 未映射

    我已经尝试修复这个错误有一段时间了 每当我的应用程序尝试创建数据上下文的实例时 我都会收到此错误 下面是代码 using System using System Collections Generic using System Linq u
  • 如何包装实体框架以在执行前拦截 LINQ 表达式?

    我想在执行之前重写 LINQ 表达式的某些部分 我在将重写器注入正确的位置时遇到问题 实际上根本没有 查看实体框架源代码 在反射器中 它最终归结为IQueryProvider Execute在 EF 中 它通过以下方式耦合到表达式Objec
  • 实体框架在连接后返回不同的记录

    考虑我们有这两个实体和一个自定义对象 public class Entiy1 public int Id get set public int DestinationId get set public string Name get set
  • 实体框架中的嵌套查询

    我收到以下异常 不支持嵌套查询 操作 1 案例 操作 2 收集 通过这个查询 var Games context Games Select a gt new GameModel Members a Type 1 a UsersInGames
  • 如何将包含 5000 条记录的 Excel 文件插入到 documentDB 中?

    我有一个 Excel 文件 最初约有 200 行 我能够将 Excel 文件转换为数据表 并且所有内容都正确插入到 documentdb 中 Excel 文件现在有 5000 行 在插入 30 40 条记录后不会插入 其余所有行不会插入到
  • 实体框架 CTP 4 - 代码优先自定义数据库初始值设定项

    我想实现自定义数据库初始化策略 以便我可以生成数据库架构并使用提供的用户 ID 和密码将其应用到现有的空 SQL 数据库 不幸的是 内置策略无法提供我正在寻找的内容 The default strategy creates the DB o
  • 更改 IdentityServer4 实体框架表名称

    我正在尝试更改由 IdentityServer4 的 PersistedGrantDb 和 ConfigurationDb 创建的默认表名称 并让实体框架生成正确的 SQL 例如 而不是使用实体IdentityServer4 EntityF

随机推荐

  • PHP:CURL 库:获取curl_exec 的状态

    我正在 PHP 中使用 cURL 编写一个函数 将远程 xml 文件获取到本地文件夹中 一切正常 但我有一个问题 fileIn curl init http some remote host com file xml fileOut fop
  • C# 8.0 支持 IAsyncEnumerable 吗?

    真的很难找到任何相关信息IAsyncEnumerable 除了 C 8 0 新增功能 文章中的一些提及之外 尝试在启用了 netstandard 2 0 和 C 8 的 Visual Studio 2019 中使用它 它确实识别了该类 但我
  • Reactjs process.env.PUBLIC_URL 不起作用

    在反应中 我使用下面的代码来加载配置 json 但是如果我添加 则会出现错误 console log process env PUBLIC URL 当我删除它时 它起作用了 Error is ReferenceError 进程未定义 con
  • 使用 Spring @Controller 构造型保持方法可见性的最佳实践

    我当前工作使用的项目privateMVC 控制器方法的访问修饰符 Controller public class HelloWorldController RequestMapping helloWorld private ModelAnd
  • Azure AD Powershell:提取用户的上次登录时间

    我正在尝试提取用户在 Active Directory 上的上次登录时间 我找到了这个脚本 它应该可以解决问题 Install Module AzureADPreview Import Module AzureADPreview Cred
  • 是否可以使用 JclDebug 从引发异常的方法中获取参数值?

    我使用函数 JclGetExceptStackList 来记录引发的异常的调用堆栈 我希望 如果可能的话 也记录引发异常的方法中的参数值 我不知道是否可以使用 JclDebug 来做到这一点 或者是否存在任何其他方法来做到这一点 谁能帮我
  • 矩形之间的最佳负空间算法?

    给定较大矩形 R 内的矩形 r 是否存在最佳快速算法来确定填充 的矩形的最小数量 负空间 https i stack imgur com rnboe png r 之间 例如 假设紫色矩形内有这三个蓝色矩形 我如何快速确定下面绿色的矩形列表
  • 如何在序列化activerecord后访问列值

    我有一个像这样的简单模型 class User lt ActiveRecord Base serialize preferences end 我想从mysql访问原始值 而不是序列化之前的值 是否可以 我知道我可以使用 ActiveReco
  • dafny 建模整数溢出

    Can Dafny 模型整数溢出 当达夫尼证明以下事实时 我感到很惊讶 method overflow c int if c gt 0 assert c 1 gt 0 我缺少什么 方式intDafny 中的意思是 数学整数 所以不存在溢出
  • 如何更改 Facebook Font Awesome 图标的颜色?

    我想更改 Font Awesome Facebook 图标的颜色 如果我这样做background color body font size 5em background 555 fa facebook square color blue
  • 如何将段落显示为水平列表?

    我希望我的网站有一个 关于 部分 其中一个 col 1 部分位于其他部分之上 在该部分下面 有 3 栏描述了我生活的 3 个方面 我尝试了 inline block 但无法使其工作 但我真的希望这种方法能够成功 因为它的灵活性 html s
  • 无论我如何尝试,System.Web.Http 引用默认为 4.0 版本

    我在我的项目中使用 BreezeApi NuGet 包 它位于 Visual Studio 2013 中 我收到这个错误 错误 41 程序集 Breeze WebApi2 Version 1 4 0 0 Culture neutral Pu
  • 我应该使用文件描述符或流来读取/写入套接字

    设置套接字后 更好的做法是在套接字描述符上使用 read 2 和 write 2 调用 还是使用 fdopen 3 将流与套接字描述符关联 然后使用 stdio 3 函数 int sfd socket PF INET SOCK STREAM
  • javascript/jquery 中的触控板点击事件

    有什么方法可以处理 mac 触控板的点击吗 我需要处理触控板上的 点击 和 点击 尤其是在 Mac 上 I tried event special tap setup function data namespaces var elem th
  • Sharepoint 服务器上托管的 ASP.NET Web 应用程序出现 Sharepoint 2007 NTLM 问题

    我在 Sharepoint 2007 机器上托管一个 ASP NET Web 应用程序 该应用程序对 Sharepoint 进行 Web 服务调用以检索文档位置 特别是 GetListItems 方法 该服务通过传递具有适当权限的有效 Sh
  • IntelliJ IDEA 12——查看调用堆栈

    我是 IntelliJ IDE 的新手 通常使用 Visual Studio 我想查看特定断点处的当前调用堆栈 我找到了有关构建调用层次结构的信息 但这不是我要找的 任何有关如何查看当前调用堆栈的信息将不胜感激 The call stack
  • R arules :从规则中提取 lhs 项

    我想从 arules 生成的规则中提取 lhs 项目 例如 a b c gt d 我希望能够提取a b c并将其放入字符向量中 以便我可以根据这些项目进行迭代和进一步处理 目前 我可以考虑解析这组规则 将其转换为数据帧 然后使用字符操作 正
  • PHP 和 SOAP。换信封

    有很多关于 PHP 和 SOAP 的问题 但我没有找到关于我的情况的答案 所以 我使用 PHP SoapClient 和 WSDL 对象发送这个
  • 如何将 Three.js 导入我的 Nuxt 项目

    我想将 THREE js 中的示例文件夹中的模块 例如 OBJLoader 导入到我的 Nuxt 项目中 我可以导入三个主文件夹 但是在尝试导入示例文件夹中的模块时会发生错误 尝试了官方文档中的这些步骤 https trijs org do
  • 使用(顺序)GUID 是数据库生成 ID 的唯一可行替代方案吗?

    我们正在使用 Entity Framework 5 Code First 方法将 MS Access 数据库迁移到 SQL Server Compact 4 0 我们发现使用数据库生成的整数 ID 非常慢 更糟糕的是 延迟随着数据库的大小呈