我有一个MyISAM表T与以下架构: f1(整数无符号不为空)f2(整数无符号不为空) 这个表格有一个f2的索引,目前包含了3.2亿行,预计每周会以约20万行的速度增长。 我在这个表上执行以下查询: SELECT DISTINCT T.f1 FROM T WHERE f2 = @ Var LIMIT?,30 @Var是一个传递给执行这个查询的存储过程的variables,LIMITvariables根据显示的页码(从0开始等) 检索的速度非常好(考虑到表格非常大),但是行按照写入表格的顺序出现(即不按f1顺序)。 我希望能够在上面的查询中包含子句“ORDER BY f1 DESC”,但是,如果不使用INDEX,则会自杀! (有时可能有超过一百万行满足查询,并没有索引sorting可能会杀死服务器) 我的问题是…什么样的指数(es)应该是为了迎合我正在运行的查询,也是为了sorting结果中的行? 如果查询和sorting不能满足使用索引,我正在考虑更新后执行ALTER TABLE T ORDER BY f1 DESC(而用户仍然可以查询数据)。 在这种情况下,在我的开发机器上,alter语句花了大约50分钟,这也不算太坏。 显然,在LIVE机器上,我需要拥有与原始表的大小一样多的磁盘可用空间…是否还有其他需要考虑的事项? 提前感谢蒂姆
我试图减less写入磁盘,并在我的社交网站,我有一个lastactivity表更新与()用户上次使用该网站的时间()。 目前是MyIsam: id int(7)PRI auto_increment lastactivity int(10)无符号 username varchar(25) 它目前有大约10万条logging。 如果mysql重新启动,我可以从主用户表中的最后login再次填充它。 这台机器有很多的备用内存,但是这个表经常被locking,我想是因为所有的更新,如果它是MEMORY表types会更好?
我在myisam有一个大数据,所以表的磁盘空间已满 所以我可以限制在MyISAM表上?
通过传输实用程序传输多个帐户时出现此错误: 错误:无法转储一个或多个数据库 我被一个cPanel技术人员告诉了我 Here is the specific error I'm seeing on some of the accounts: warn [pkgacct] eli_test: mysqldump: Got error: 1034: Incorrect key file for table 'bak_components'; try to repair it when using LOCK TABLES You may need to try to repair these tables as suggested in the error. After some further research I […]
我正在运行mysqltuner来调整我的数据库,我遇到了一个非常奇怪的事件。 即使整个数据库是MyISAM(所有表),它说: [!!] InnoDB data size / buffer pool: 403.1M/128.0M 数据库的默认存储引擎是InnoDB(即使所有的表都是MyISAM),所以我认为这可能会导致问题,但是当我将默认存储引擎值更改为MyISAM时,我仍然可以看到与InnoDB相关的完全相同的警告在mysqltuner中。 那么为什么会发生这种情况,我该如何解决? 当我不使用InnoDB开始时,我宁愿不浪费InnoDB缓冲池中的400M。 注意:我不想在这里做的是讨论MyISAM VS InnoDB这个古老的问题,我只需要弄清楚为什么InnoDB正在使用我的资源,即使我不使用它。
我有一个服务器崩溃,并采取了硬盘驱动器。 我把硬盘放在一个USB机箱里,但是主分区不能挂载,因为这个分区已经损坏了。 我能够看到USB硬盘驱动器,只是没有安装它。 使用“dd”命令,我能够find一个超级块,我能够做一个老硬盘的图像。 从这个图像中,我能够检索我的网页文件,但是我真正需要的是数据库,所以我使用了“e2fsck”,它把所有东西都放到了lost + found目录中,这里面有很多。 我已经浏览了整个lost + found目录,并且首先整理了所有的MySQL文件,然后整理出了date和时间标记,以匹配我试图检索的数据库。 每个文件名都是原始文件的inode编号,而且看起来好像是按某种顺序排列的,所以这些表格可能一次又一次地一个接一个地创build。 然而,没有模式,为什么inode数字的顺序中断? 标有“MISAM”的文件是.MYI文件。 标有“定义”的文件是.FRM文件。 有些显示版本9,有些是版本10 – 这是否有所作为? 标有“数据”的文件是.MYD文件。 一些显示“数据”,一些显示“DBase 3数据文件” – 这是否有所作为? 我可以使用“cat”命令来查看文件内容,但几乎不可能确定它属于哪个表。 如果我有一个表名的列表,有没有办法找出哪些文件属于哪些表? 即使如此,我怎样才能确定一个frm,myi和myd文件是否属于同一个表? 思考?
我最近从我的mysql表中切换到innodb。 在我使用MATCH()之前。 由于innodb不支持match(),我决定使用LIKE。 现在我有一个问题。 我的桌子是190,6 MiB大,有234,083行。 当我使用LIKE时,我的服务器变慢。 我从myisam切换到innodb来停止locking桌子。 我该怎么办? 谢谢!
我有一个关于MyISAM引擎的MySQL处理删除后的空闲空间的方式以及在插入新logging时的行为方式的问题。 例如,考虑一个新的空白数据库(例如,假设为10 kb)。 插入10000条logging(假设每条logging占用1kb)后,文件系统上的总大小变为10010kb。 然后,删除5000条logging后,文件系统上的大小仍然保持在10010 kb,即使logging数减半(这里没有什么奇怪的,这是正常的行为)。 OPTIMIZE命令可以随后对数据库进行“碎片整理”,并通过重新组织其数据来回收可用空间。 但是 ,如果我完全忽略了OPTIMIZE命令并插入了2000条新logging(所以5000条仍然有2000条新logging= 7000条logging),那么MySQL是否会将新logging的前一个删除剩余的空闲空间重用(意思是DB的大小10010 kb不会改变),或者是“追加”新的logging到数据库(也就是说,文件系统上的数据库大小将增长到12010 kb)? 谢谢! 🙂
我正在使用MySQL 5.5与myisam分贝。 目前,有时候mysql的cpu占用率将达到200%的CPU资源。 在mysql中有很多查询“等待表locking”。 而在这个时候,php-fpm的CPU使用率会越来越高。 那么服务器会非常慢。 我必须重新启动php-fpm,然后服务器将恢复正常 我做了很多testing,似乎这个问题是由mysql造成的。 下面是我的服务器configuration,任何一个可以给我任何build议,以调整MySQL? 目前我的数据库大约5.5G,并存储在SSD磁盘。我的服务器有32G内存。 SLOW QUERIES The slow query log is enabled. Current long_query_time = 2.000000 sec. You have 4886 out of 66789208 that take longer than 2.000000 sec. to complete [: 0.00000000000000000000: bad number Your long_query_time seems to be fine BINARY UPDATE LOG The binary update log is […]
我在具有8GB RAM的Windows Server 2008 R2计算机上使用MySQL 5.1。 我每周更新2个数据库。 两个数据库都由MyISAM表组成,我运行一个脚本来执行必要的INSERT(无UPDATEs / DELETE)到一些表(下面的表gp有超过370,000,000行)。 在执行mysql脚本的过程中(整个过程大约需要2.5个小时),我可以看到与INSERT同时运行的SELECT语句(但在不同的表,甚至在不同的数据库中)被“阻塞”,只是挂起,直到整个插入过程结束。 一个插入插入将大约50-60对整数进入gp表,这可能需要2-4秒(整个过程将有大约2000-4000每个这些)。 所以,如果在INSERT中有10个SELECT,那么所有这些都会在SHOW PROCESSLIST中看到。 Id User Host db Command Time State Info 35 root localhost:36954 db Query 1 update INSERT INTO db_2.gp VALUES(@g,669313116),(@g,…),… (@g is an integer variable and there would normally be about 50-60 pairs of values here) 42 root localhost:38019 db Query 113 […]