gpt4 book ai didi

mysql - 生产中使用 mysql 的 Entity Framework 代码优先

转载 作者:行者123 更新时间:2023-11-29 00:35:24 26 4
gpt4 key购买 nike

我首先使用 EF 代码创建一个 asp.net *MVC* 应用程序。我曾使用 Sql azure 作为我的数据库。但事实证明,Sql Azure 并不可靠。所以我正在考虑将 MySql/PostgreSQL 用于数据库。

我想知道在性能方面首先将 EF 代码与 MySql/PostgreSQL 结合使用的影响/影响。有没有人在生产中使用过这个组合或者认识谁用过它?

编辑
我在 Sql Azure 中不断收到以下异常。

SqlException: "*A transport-level error has occurred when receiving results from the server.* 
(provider: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host.)"

    SqlException: *"Database 'XXXXXXXXXXXXXXXX' on server 'XXXXXXXXXXXXXXXX' is not
currently available. Please retry the connection later.* If the problem persists, contact
customer support, and provide them the session tracing ID of '4acac87a-bfbe-4ab1-bbb6c-4b81fb315da'.
Login failed for user 'XXXXXXXXXXXXXXXX'."

最佳答案

首先,您的问题似乎是网络问题,可能与您的 ISP 有关。您可能想查看获取远程 PostgreSQL 或 MySQL 数据库,我认为您会遇到同样的问题。

其次比较 MySQL 和 PostgreSQL 的性能比较棘手。一般来说,MySQL 针对 pkey 查找进行了优化,而 PostgreSQL 针对复杂用例进行了更广泛的优化。这可能有点低级但是......

MySQL InnoDB 表基本上是 btree 索引,其中叶注释包含表数据。主键是索引的键。如果没有提供主键,将为您创建一个。这意味着两件事:

  1. select * from my_large_table 会很慢,因为不支持物理订单扫描。

  2. Select * from my_large_table where secondary_index_value = 2 需要两次索引遍历,因为二级索引仅引用主键值。

相比之下,主键值的选择将比 PostgreSQL 更快,因为索引包含数据。

相比之下,PostgreSQL 在一系列堆页面中以无序方式存储信息。索引与数据是分开的。如果您想通过主键拉取,您可以扫描索引,然后读取找到数据的数据页,然后拉取数据。相比之下,如果你从二级索引中拉取,这并没有慢多少。此外,表的结构使得在执行长 select * from my_large_table 时可以进行顺序磁盘访问,这将导致操作系统预读缓存能够显着提高性能。

简而言之,如果您的查询只是通过主键进行无连接选择,那么 MySQL 将为您提供更好的性能。如果您有联接等,PostgreSQL 会做得更好。

关于mysql - 生产中使用 mysql 的 Entity Framework 代码优先,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14561019/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com