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

  

本篇内容介绍了“Python访问MySQL数据库速度慢的解决方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

python可以做什么

Python是一种编程语言,内置了许多有效的工具,Python几乎无所不能,该语言通俗易懂、容易入门、功能强大,在许多领域中都有广泛的应用,例如最热门的大数据分析,人工智能,Web开发等。

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

1、主机名

2、重复开、关数据库

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

解决方法:

1、用IP地址代替localhost:mysql -h 127.0.0.1 -uroot -p

2、禁止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远程连接某主机响应很慢的问题,原理一样。

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

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

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

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

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

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

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

select id from t where num is null

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

select id from t where num=0

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

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

可以这样查询:

select id from t where num=10
  union 
  select  id 得到t  where  num=20 

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

select  id 得到t  where  name  like  ? c % & # 39;

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

6,在和不在也要慎用,否则会导致全表扫描,如:

select  id 得到t  where  num 在(1、2、3)

对于连续的数值,能之间用就不要用在了:

select  id 得到t  where  num 结构;1,以及3

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

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