广告
返回顶部
首页 > 资讯 > 数据库 >解决Python访问MySQL数据库速度慢的问题
  • 549
分享到

解决Python访问MySQL数据库速度慢的问题

PythonMySQL数据库速度慢 2022-05-29 11:05:21 549人浏览 薄情痞子
摘要

这两天写了个作业,关于学生选课系统的,随后完成后也会发布到我的博客里面。室友的访问速度几乎是毫秒级,而我的起码要等上四五秒钟。 我总结的影响访问速度的原因主要有以下几种: 主机名 重复开、关数据库 后台数据库中的数据

这两天写了个作业,关于学生选课系统的,随后完成后也会发布到我的博客里面。室友的访问速度几乎是毫秒级,而我的起码要等上四五秒钟。

总结的影响访问速度的原因主要有以下几种:

主机名

重复开、关数据库

后台数据库中的数据过多,没做数据优化导致后台查询数据很慢

解决方法:

用IP地址代替localhost:Mysql -h 127.0.0.1 -uroot -p

禁止mysql做域名解析: Mysql在处理新的线程连接请求时,会尝试进行DNS解析,如果在host

cache和Hosts里找不到,处理起来就会很慢

因此最直接简便的方法就是禁用该反向解析功能,可以通过修改MySQL的配置文件实现,linux下是my.cnf文件,windows下是my.ini文件,在配置

文件[mysqld]下新增如下一行代码: skip-name-resolve

然后重启MySQL服务,再次连接发现已是秒连了。

这个方案的不足之处就是,以后在使用grant对用户进行授权时只能使用IP格式,而不能使用主机名称了。

通过修改系统hosts文件也可以实现,举例来说,我想解决192.168.1.100远程连接MySQL服务器缓慢的问题,只需要在MySQL库所在服务器的hosts文件中新增一条记录如下:192.168.1.100

test.com保存退出,再次远程连接该MySQL库,同样很快。之所以说绝,是因为这样设置,你添加记录的

192.168.1.100远程连接速度变快了,其他主机连接速度跟之前一样慢。该方法同样可以解决ssh远程连接某主机响应很慢的问题,原理一样。

开一次数据库,等所有数据库操作全部完成后再关闭游标关闭数据库,也能相对的加快访问速度。

补充:python | MySQL 处理海量数据时优化查询速度方法

最近一段时间由于工作需要,开始关注针对Mysql数据库的select查询语句的相关优化方法。

由于在参与的实际项目中发现当mysql表的数据量达到百万级时,普通SQL查询效率呈直线下降,而且如果where中的查询条件较多时,其查询速度简直无法容忍。曾经测试对一个包含400多万条记录(有索引)的表执行一条条件查询,其查询时间竟然高达40几秒,相信这么高的查询延时,任何用户都会抓狂。因此如何提高sql语句查询效率,显得十分重要。以下是网上流传比较广泛的30种SQL查询语句优化方法:

应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。

对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。

应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:


select id from t where num is null

可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:


select id from t where num=0

尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:


select id from t where num=10 or num=20

可以这样查询:


select id from t where num=10
uNIOn all
select id from t where num=20

下面的查询也将导致全表扫描:(不能前置百分号)


select id from t where name like ‘�c%'

若要提高效率,可以考虑全文检索。

in 和 not in 也要慎用,否则会导致全表扫描,如:


select id from t where num in(1,2,3)

对于连续的数值,能用 between 就不要用 in 了:


select id from t where num between 1 and 3

如果在 where 子句中使用参数,也会导致全表扫描。因为SQL只有在运行时才会解析局部变量,但优化程序不能将访问计划的选择推迟到运行时;它必须在编译时进行选择。然 而,如果在编译时建立访问计划,变量的值还是未知的,因而无法作为索引选择的输入项。如下面语句将进行全表扫描:


select id from t where num=@num

可以改为强制查询使用索引:


select id from t with(index(索引名)) where num=@num

应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描。如:


select id from t where num/2=100

应改为:


select id from t where num=100*2

应尽量避免在where子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描。如:


select id from t where substring(name,1,3)='abc'?name以abc开头的id
select id from t where datediff(day,createdate,'2005-11-30′)=0?'2005-11-30′生成的id

应改为:


select id from t where name like ‘abc%'
select id from t where createdate>='2005-11-30′ and createdate<'2005-12-1′

不要在 where 子句中的“=”左边进行函数、算术运算或其他表达式运算,否则系统将可能无法正确使用索引。

在使用索引字段作为条件时,如果该索引是复合索引,那么必须使用到该索引中的第一个字段作为条件时才能保证系统使用该索引,否则该索引将不会被使 用,并且应尽可能的让字段顺序与索引顺序相一致。

不要写一些没有意义的查询,如需要生成一个空表结构:


select col1,col2 into #t from t where 1=0

这类代码不会返回任何结果集,但是会消耗系统资源的,应改成这样:


create table #t(…)

很多时候用 exists 代替 in 是一个好的选择:


select num from a where num in(select num from b)

用下面的语句替换:


select num from a where exists(select 1 from b where num=a.num)

并不是所有索引对查询都有效,SQL是根据表中数据来进行查询优化的,当索引列有大量数据重复时,SQL查询可能不会去利用索引,如一表中有字段 sex,male、female几乎各一半,那么即使在sex上建了索引也对查询效率起不了作用。

索引并不是越多越好,索引固然可以提高相应的 select 的效率,但同时也降低了 insert 及 update 的效率,因为 insert 或 update 时有可能会重建索引,所以怎样建索引需要慎重考虑,视具体情况而定。一个表的索引数最好不要超过6个,若太多则应考虑一些不常使用到的列上建的索引是否有 必要。

应尽可能的避免更新 clustered 索引数据列,因为 clustered 索引数据列的顺序就是表记录的物理存储顺序,一旦该列值改变将导致整个表记录的顺序的调整,会耗费相当大的资源。若应用系统需要频繁更新 clustered 索引数据列,那么需要考虑是否应将该索引建为 clustered 索引。

尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能,并会增加存储开销。这是因为引擎在处理查询和连接时会 逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了。

尽可能的使用 varchar/nvarchar 代替 char/nchar ,因为首先变长字段存储空间小,可以节省存储空间,其次对于查询来说,在一个相对较小的字段内搜索效率显然要高些。

任何地方都不要使用 select * from t ,用具体的字段列表代替“*”,不要返回用不到的任何字段。

尽量使用表变量来代替临时表。如果表变量包含大量数据,请注意索引非常有限(只有主键索引)。

避免频繁创建和删除临时表,以减少系统表资源的消耗。

临时表并不是不可使用,适当地使用它们可以使某些例程更有效,例如,当需要重复引用大型表或常用表中的某个数据集时。但是,对于一次性事件,最好使 用导出表。

在新建临时表时,如果一次性插入数据量很大,那么可以使用 select into 代替 create table,避免造成大量 log ,以提高速度;如果数据量不大,为了缓和系统表的资源,应先create table,然后insert。

如果使用到了临时表,在存储过程的最后务必将所有的临时表显式删除,先 truncate table ,然后 drop table ,这样可以避免系统表的较长时间定。

尽量避免使用游标,因为游标的效率较差,如果游标操作的数据超过1万行,那么就应该考虑改写。

使用基于游标的方法或临时表方法之前,应先寻找基于集的解决方案来解决问题,基于集的方法通常更有效。

与临时表一样,游标并不是不可使用。对小型数据集使用 FAST_FORWARD 游标通常要优于其他逐行处理方法,尤其是在必须引用几个表才能获得所需的数据时。在结果集中包括“合计”的例程通常要比使用游标执行的速度快。如果开发时 间允许,基于游标的方法和基于集的方法都可以尝试一下,看哪一种方法的效果更好。

在所有的存储过程和触发器的开始处设置 SET NOCOUNT ON ,在结束时设置 SET NOCOUNT OFF 。无需在执行存储过程和触发器的每个语句后向客户端发送 DONE_IN_PROC 消息。

尽量避免向客户端返回大数据量,若数据量过大,应该考虑相应需求是否合理。

尽量避免大事务操作,提高系统并发能力。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持自学编程网。如有错误或未考虑完全的地方,望不吝赐教。

您可能感兴趣的文档:

--结束END--

本文标题: 解决Python访问MySQL数据库速度慢的问题

本文链接: https://www.lsjlt.com/news/10264.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 解决Python访问MySQL数据库速度慢的问题
    这两天写了个作业,关于学生选课系统的,随后完成后也会发布到我的博客里面。室友的访问速度几乎是毫秒级,而我的起码要等上四五秒钟。 我总结的影响访问速度的原因主要有以下几种: 主机名 重复开、关数据库 后台数据库中的数据...
    99+
    2022-05-29
    Python MySQL 数据库速度慢
  • Python访问MySQL数据库速度慢的解决方法
    本篇内容介绍了“Python访问MySQL数据库速度慢的解决方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!python可以做什么Pyth...
    99+
    2023-06-14
  • 解决python存数据库速度太慢的问题
    问题 在项目中遇到一个问题,需要从文本中读取三万条数据写入mysql数据库,文件中为用@分割的sql语句,但是在读取的过程中发现速度过慢,三万八千条数据需要220秒,问题代码片段如下...
    99+
    2022-11-12
  • github访问速度慢的问题完美解决
    正文 1. 修改本地hosts文件 windows系统的hosts文件的位置如下:C:\Windows\System32\drivers\etc\hostsmac/linux系统的h...
    99+
    2022-11-13
    github访问速度慢 github访问速度
  • 访问mysql速度慢如何解决
    mysql访问速度慢的解决方法首先,在mysql安装目录中,查找到my.cnf配置文件,并用记事本打开;my.cnf配置文件打开后,在文件中查找到“[mysqld]”选项,查找到[mysqld]选项后,在[mysqld]后添加代码;skip...
    99+
    2022-10-18
  • 如何解决香港主机访问速度慢的问题
    解决香港主机访问速度慢问题的方法:1、选择一个专业、配置高的香港主机来搭建网站;2、对香港主机的文件以及图片进行压缩,比如使用Gzip压缩方式,可有效提高数据传输速度;3、给香港主机接入CDN加速服务,改善网络环境,从而提高主机访问速度。具...
    99+
    2022-10-24
  • 怎么解决香港服务器访问速度慢的问题
    今天就跟大家聊聊有关怎么解决香港服务器访问速度慢的问题,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 一个网站,应用的访问速度非常重要的一个问题,它会直接影响到用户体验,如...
    99+
    2023-06-07
  • 如何解决香港服务器访问速度慢的问题
    香港服务器访问速度慢的解决方法有:1、选择能够直接连接国内网络骨干的机房;2、选择域名解析速度快的域名服务器;3、尽量减少网站页面的请求数量;4、简化网页结构代码和对图片大小进行压缩操作;5、选择香港服务器时,要以BGP线路为主;6、给香港...
    99+
    2022-10-21
  • 如何解决香港服务器访问速度很慢的问题
    香港服务器访问速度很慢的解决方法:1、选择dns解析速度快的服务器降低dns查询时间;2、降低香港服务器网站的http请求数量;3、使用Gzip压缩对香港服务器部署的网站进行压缩;4、给香港服务器接入CDN加速服务,改善网络环境。具体内容如...
    99+
    2022-10-21
  • 解决pip下载速度过慢的问题
    文章目录 前言一、问题分析二、解决办法1.下载时加入参数 -i [镜像源地址]2.设置源3.国内镜像源地址 前言 在做项目的时候,我们会发现单纯的使用 pip 安装插件或模块,下载速...
    99+
    2023-09-12
    pip python 深度学习
  • 如何解决美国服务器在国内访问速度慢问题
    美国服务器在国内访问速度慢的解决方法:1、租用美国服务器时,可选择直连国内网络骨干的机房来进行解决;2、选择域名解析比较快的域名服务器,从而降低域名解析时间来提高访问速度;3、需要减少美国服务器网站程序的请求数量;4、需要将美国服务器网站程...
    99+
    2022-10-15
  • 如何解决mysql中count查询速度很慢的问题
    这篇文章主要介绍了如何解决mysql中count查询速度很慢的问题,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。MySQL 大表的count()...
    99+
    2022-10-18
  • git clone速度太慢的问题怎么解决
    这篇文章主要介绍“git clone速度太慢的问题怎么解决”,在日常操作中,相信很多人在git clone速度太慢的问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”git clone速度太慢的问题怎...
    99+
    2023-06-16
  • 怎么解决数据库变慢问题
    这篇文章主要介绍“怎么解决数据库变慢问题”,在日常操作中,相信很多人在怎么解决数据库变慢问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么解决数据库变慢问题”的疑惑有所帮...
    99+
    2022-10-18
  • MAC 如何解决GitHub下载速度慢的问题
    说在前面 解决github下载速度慢的方法很多,本文主要介绍通过Git镜像的方式解决下载慢的问题。 主要步骤有:1、找到gitconfig文件, 2、通过git命令查看当前生效的config 配置 3...
    99+
    2023-10-27
    macos github
  • 怎么解决MySQL数据库出现慢查询问题
    这篇文章主要讲解了“怎么解决MySQL数据库出现慢查询问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么解决MySQL数据库出现慢查询问题”吧!1、My...
    99+
    2022-10-18
  • 如何解决美国服务器速度慢的问题
    解决美国服务器速度慢的方法:1、更新或升级美国服务器配置资源,例如升级服务器带宽配置,提高网站速度;2、升级美国服务器内存和处理器,增加服务器等承受能力;3、对美国服务器网站的代码结构以及页面大小进行优化压缩。具体内容如下:升级服务器带宽配...
    99+
    2022-10-19
  • 如何解决SSD固态硬盘速度慢的问题
    这篇文章主要介绍如何解决SSD固态硬盘速度慢的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、SSD正确安装接口的重要性被忽略如果你使用的是笔记本电脑,要先确认主板的扩展接口提供的是SATA 2、SATA 3或...
    99+
    2023-06-28
  • 终于彻底解决了conda install速度慢的问题
    conda最令人诟病的缺点就是install非常、非常慢。 经常出现 网络上提供的方法,通常并不能解决问题, 方法一:更改anaconda仓库源地址 方法二:从其他网站下载好安装包,然后使用conda本地安装方法 方法三:添加代理。其实并不...
    99+
    2023-09-09
    conda python 深度学习
  • Python查询oracle数据库速度慢的解决方案
    如下所示: conn = cx_Oracle.connect('username/password@ip:port/servername') cur = conn.cursor(...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作