gpt4 book ai didi

mysql - 从mysql数据库表中同时进行多个选择

转载 作者:行者123 更新时间:2023-11-29 20:08:03 25 4
gpt4 key购买 nike

我正在开发一个数据库,该数据库有一个包含 2100 万条记录的表。数据在数据库创建时加载一次,不再进行插入、更新或删除操作。 Web 应用程序访问数据库以做出选择语句。

目前,每个请求服务器需要 25 秒才能收到响应。但是,如果多个客户端同时发出请求,则响应时间会显着增加。有没有办法加快这个过程?

我使用 MyISAM 而不是具有固定最大行数的 InnoDB,并根据搜索字段建立索引。

最佳答案

如果没有数据被更新/插入/删除,那么这可能是您想要告诉数据库在读取表时不要锁定表的情况。

对于 MYSQL,这似乎是这样的:

SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
SELECT * FROM TABLE_NAME ;
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ;

(引用:http://itecsoftware.com/with-nolock-table-hint-equivalent-for-mysql)

更多阅读文档,如果有帮助的话:

https://dev.mysql.com/doc/refman/5.7/en/innodb-transaction-isolation-levels.html

TSQL 的等效项是,如果您需要进一步谷歌,它可能会有所帮助

SELECT * FROM TABLE WITH (nolock)

这可能会提高性能。正如其他评论中所指出的,一些好的索引可能会有所帮助,并且可能会进一步分解表格(如果可能的话)以分散内容,这样您就不会在不需要时访问所有数据。

作为注释;锁定表可以防止其他人在您使用表时更改数据。不锁定具有大量插入/删除/更新的表可能会导致您的选择返回多行相同数据(因为它在硬盘驱动器上移动)、缺少列的行等等。

由于您有一张 table ,因此您根据请求选择的所有 table 都会轮流锁定和解锁该 table 。如果您不进行更新、插入或删除,那么您的数据不应更改,因此您应该可以放弃锁定。

关于mysql - 从mysql数据库表中同时进行多个选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40273691/

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