很卡是什么原因(wⅰfⅰ卡顿怎么办)

lxf2023-12-17 09:20:02

bitsCN.com mysql使用db很难解决。

用了一个mysql,用了db之后总觉得卡,按回车键需要1s才能返回。我发现有些奇怪,于是打开通用日志,找到了一个简单的使用测试。mysql实际上执行了很多内容:

Sql代码

130603 16:02:11 2查询选择数据库()

2初始数据库测试

2查询显示数据库

2查询显示表

2字段列表b

2字段列表宝马

2字段列表http_auth

2字段列表性能_机器

2字段列表t

2字段列表t1

2字段列表t2

2字段列表t5

2字段列表t_max_col

2字段列表tb

2字段列表tbcsv

2字段列表tbmemory

2字段列表tbmyisam

2字段列表tc

2字段列表合计

2字段列表tt

而简单的show tables、show databases、select database()和show tables from test实际上只对应一个generallog。

Sql代码

130603 16:17:12 2查询显示表

130603 16:17:28 2查询显示数据库

130603 16:17:48 2查询选择数据库()

130603 16:19:44 3查询显示测试中的表

可以看到一个来自general log的使用测试,实际上是多次执行dispatch_command(),使用gdb为general_log_write()设置断点。实际执行如下:

COM_QUERY,对应的sql是SELECT DATABASE(),调用路径是:handle _ one _ connection(SQL _ connect . cc)-> do _ command(SQL _ parse . cc)-> dispatch _ command(SQL _ parse . cc,command = com _ query,packet = "select database。

COM_INIT_DB,调用路径为:handle _ one _ connection(SQL _ connect . cc)-> do _ command(SQL _ parse . cc)-> dispatch _ command(SQL _ parse . cc,command = com _ init _ db,packet = " test ");

COM_QUERY,对应的sql是show databases,调用路径是:handle _ one _ connection(SQL _ connect . cc)-> do _ command(SQL _ parse . cc)-> dispatch _ command(SQL _ parse . cc,command = com _ query,packet = "show databases。

COM_QUERY,对应的sql是show tables,调用路径是:handle _ one _ connection(SQL _ connect . cc)-> do _ command(SQL _ parse . cc)-> dispatch _ command(SQL _ parse . cc,command = com _ query,packet = "showtables "。

COM_FIELD_LIST,调用路径为:handle _ one _ connection(SQL _ connect . cc)-> do _ command(SQL _ parse . cc)-> dispatch _ command(SQL _ parse . cc,command = com _ field _ list,packet = "columns _ priv。这里调用n次(n是所用模式下的表数,每次pachet的内容是表名);

所以当使用的模式下有很多表的时候,自然会出现卡顿(如果连续使用同一个模式,那么第二次使用的时候,就只有COM_QUERY和COM_INIT_DB的进程了)。为了避免使用DB后卡死,my.cnf中加入了no-auto-rehash;或者在连接mysql客户端时添加-A选项。

bitsCN.com adminjs.cn是一个以CSS、JavaScript、Vue、HTML为核心的前端开发技术网站。我们致力于为广大前端开发者提供专业、全面、实用的前端开发知识和技术支持。 在本网站中,您可以学习到最新的前端开发技术,了解前端开发的最新趋势和最佳实践。我们提供丰富的教程和案例,让您可以快速掌握前端开发的核心技术和流程。 Adminjs.cn还提供一系列实用的工具和插件,帮助您更加高效地进行前端开发工作。我们提供的工具和插件都经过精心设计和优化,可以帮助您节省时间和精力,提升开发效率。 在Adminjs.cn中,您可以找到您需要的一切前端开发资源,让您成为一名更加优秀的前端开发者。欢迎您加入我们的大家庭,一起探索前端开发的无限可能!