草庐IT

MySQL 解释 - 需要索引建议/反馈

关闭。这个问题是off-topic.它目前不接受答案。想改进这个问题吗?Updatethequestion所以它是on-topic用于堆栈溢出。关闭10年前。Improvethisquestion我有一个包含大约500万行的数据库,我遇到了查询耗时很长(超过一分钟)的问题。我希望这些信息足以让别人给我一些建议,如果我需要发布更多信息,请告诉我。提前感谢您的任何建议EXPLAINSELECTcount(*)AScountFROMvtiger_timeINNERJOINvtiger_crmentityONvtiger_crmentity.crmid=vtiger_time.timeidIN

mysql - 什么时候刷新 MySQL 查询缓存?

我有一个innodbmysql数据库,我想知道查询缓存是在表中发生任何更改时刷新还是仅在那些记录发生更改时刷新?我有一个每隔几分钟就会修改一次的大表,所以我想知道它有多大用处。谢谢 最佳答案 我认为您不是在谈论查询缓存,而是在谈论缓冲区缓存。查询缓存是最近SQL语句的缓存,这些语句永远不会刷新到磁盘。刷新缓冲区缓存不如刷新缓冲区日志重要。日志跟踪对数据库中的数据执行的更新。它用于在发生故障时恢复数据库,即当缓冲区缓存未刷新到磁盘时。在InnoDB中刷新缓冲区日志有3种主要方法,它们由参数innodb_flush_log_at_trx

php - 有没有办法弄清楚为什么我的生产 mysql 这么慢?

我有一个php文件,它解析一个txt文件并将数据写入Mysql表。xml文件相当大,超过600万行。我是在家里的电脑上做的,整个过程花了大约六个小时。现在,我正尝试在我增强的专用服务器(32GB内存)上做完全相同的事情,12小时后,它几乎只完成了10%的记录。不知道是不是连上了,前几天我也通过phpmyadmin导入了一个很大的sql文件,我觉得用的时间比应该的长很多。可能是什么问题?TIA! 最佳答案 除非您进行概要分析和诸如EXPLAIN查询之类的操作,否则很难说。不过,有一些可能性值得研究:大量索引:如果您正在执行INSERT

二级索引上的 MySQL Innodb 键长度

MySQL:Ver14.12Distrib5.0.51b,用于使用EditLine包装器的redhat-linux-gnu(x86_64)sql_1:SELECTSQL_NO_CACHECOUNT(*)FROM`ting_song_info`;结果:+----------+|COUNT(*)|+----------+|2637447|+----------+1rowinset(0.42sec)解释:+----+-------------+----------------+-------+---------------+-------------------+---------+----

mysql - MySQL中的高频插入

我在MySQL中遇到高频插入问题。我在Internet上搜索了很多,但没有找到适合我的问题的答案。我需要以非常高的频率记录大量事件(~3000次插入/秒=>每天2.6亿行),这些事件存储在这样的InnoDB表中:log_events:-id_user:BIGINT-id_event:SMALLINT-date:INT-data:BIGINT(dataassociatedtothisevent)我的问题是:-如何加快插入速度?事件由成千上万的访问者发送,我们无法批量插入-如何限制IO写入?我们在一个6*600GBSSD驱动器上并且有写IO问题你对这类问题有什么想法吗?谢谢弗朗索瓦

mysql - SQL - 计算可变长度的可变移动平均值

第一:这个问题不是重复的。我已经在这里问过了,它作为重复项被关闭了。虽然它与stackoverflow上的其他线程类似,但实际上要复杂得多。在假设它是重复的之前,请先阅读该帖子:我正在尝试计算具有可变日期的可变移动平均线交叉。即:我想提示用户输入3个值和1个选项。输入是通过网络前端进行的,因此我可以根据输入构建/编辑查询,或者在需要时进行多个查询。X=1stmovingaverageterm(Ndaymovingaverage.Anynumber1-N)Y=2ndmovingaverageterm.(Ndaymovingaverage.Anynumber1-N)Z=Amountofda

php - MySQL 在相对大的表(InnoDB)上添加索引

我有一个相对较大的InnoDB表(约2000万行),我想为列添加索引。表被频繁读写,所以我希望在添加索引时表仍然可用。我怎样才能做到这一点?我目前看到两个选项:只是盲目地添加索引并祈祷什么都不会发生使用结构+索引创建副本表,添加原始表中的数据,然后将副本重命名为原始表并删除原始表。有没有更好的办法?谢谢:)MySQL版本:5.0.51 最佳答案 第二个选项会很棒,但您如何才能做到这一点?我推荐MySQLWorkbench 关于php-MySQL在相对大的表(InnoDB)上添加索引,我们

mysql - 用于 session 的 InnoDB 或 MyISAM?

我正在为我正在构建的网站使用myisam表,因为它主要是只读的。这就是为什么我认为myisam会更好。但是我将用户session存储在数据库中......所以这意味着在每个页面请求上选择+更新session表。因此,对于session,我现在在表上有1/1的读/写,如果我需要在session中更新某些内容,那么写入可能会更高。我应该为这样的表使用innodb吗?还是1/1的读/写比率仍然是myisam没有问题的?该应用程序不会有高流量(尽管我什至不确定什么定义了这种情况下的高流量) 最佳答案 MyISAM在原始性能方面通常比Inno

mysql - apache/mysql 响应缓慢但未达到 cpu/内存和限制

我有一个很奇怪的问题。我在Ubuntu上运行一个非常繁忙的LAMP网络服务(每天有超过一百万的访问者),最近我遇到了apache响应缓慢的问题。奇怪的是,网络服务器机器和数据库机器都没有达到任何限制。CPU使用率和内存看起来都不错(它们基本上甚至没有达到最大值的10%)。Apache有足够的空闲进程来处理传入的请求。目前它每秒处理350到500个请求,配置为800。我试过Mysql设置(innodb)但没有成功。我检查了慢查询日志、进程列表等,没有任何慢查询或任何阻碍系统的迹象。目前我唯一能做的就是在用户访问时禁用一些数据库调用来保持系统的速度。换句话说,限制每次用户访问时进行的数据库

mysql - 在 MYSQL 中声明外键时出现语法错误(使用 innoDB)

我有以下表格:CREATETABLEIFNOTEXISTSbooks(book_idvarchar(50)NOTNULL,book_titlevarchar(50)NOTNULL,courseidvarchar(50)NOTNULL,FOREIGNKEY('courseid')REFERENCES'course'('course_id')ONDELETECASCADE)ENGINE=InnoDBDEFAULTCHARSET=latin1;CREATETABLEIFNOTEXISTScourse(course_idvarchar(50)NOTNULL,yearvarchar(50)NOT