我有一个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机器上,我需要拥有与原始表的大小一样多的磁盘可用空间…是否还有其他需要考虑的事项? 提前感谢蒂姆
比方说,我有一个传统的Web应用程序与两台服务器,一个networking和一个MySQL。 使用VPS或基于云的供应商,我将如何去扩展我的数据库? 如果没有传统的SAN,我怎样才能让我的mysql数据库知道数据文件的存储位置?
我有很多SQL Server bit型字段的表。 当我通过MySQL Migration Toolkit运行这些工具时,默认情况下它们被转换为tinyint 。 这太糟糕了我的代码,因为它期待真/假,它获得了0-255的可能值。 任何想法在迁移工具包中更改此转换步骤?
我写了一个shell脚本来备份mysql所有的数据库。 该脚本没有任何问题,除了这个错误“mysqldump:有错误:1017:无法find文件:'drupal_install_test'(错误:2)时使用locking表” 请帮助解决这个问题。 提前致谢。
好,所以这一天开始。 我试图在一张大桌子(700万行)上创build一个索引,然后挂起来。 那么它进入“修复的keycache” …我发现并不是那么好。 那么这个过程被打断了。 ALTER失败,没有索引。 在进一步的尝试中发生了一些事情(我不知道是什么或如何造成的),但整个表变得损坏,进入“不正确的表文件” 于是我开始修理(没有任何工作) – 花费了数小时, 所以我试着从备份恢复…这不太好。 所以我尝试从另一台服务器的.MYI和.MYD文件恢复。 这也没有工作。 所以我放弃了表格,并将其重新创build为空(数据不是问题)。 所有的系统都运行,一切运行平稳。 但每次我尝试在重新创build的表上执行插入MySQL崩溃。 然后下一个查询(通常我试图用SHOW PROCESSLIST\G;来查看在shell中发生了什么SHOW PROCESSLIST\G; )从服务器启动每个连接,并且得到类似这样的错误: *************************** 1. row *************************** Id: 11 User: debian-sys-maint Host: localhost db: NULL Command: Query Time: 1 State: Repair by sorting Info: products *************************** 3. row *************************** Id: 71 User: debian-sys-maint Host: localhost db: NULL Command: […]
我正在将MySql服务器实例迁移到另一台物理服务器。 我已经通过MySqlpipe理员转移了所有的数据库,但我没有看到一种方式来导出所有这些数据库的Mysql用户。 有没有办法做到这一点?
基本上, 我在脚本中遇到这个错误: 致命错误:在第10行调用/var/www/login/includes/db.php中未定义的函数mysql_connect() 我已经取消了扩展名:mysql.so 我不知道为什么它不工作,重新启动一切。 我在Ubuntu 32位上运行。 Apache / MYSQL安装完全权限。 这是我的PHPInfo页面: System Linux rabbits.org 2.6.18-194.3.1.el5.028stab069.6 #1 SMP Wed May 26 19:05:45 MSD 2010 i686 Build Date Jan 6 2010 21:40:40 Server API Apache 2.0 Handler Virtual Directory Support disabled Configuration File (php.ini) Path /etc/php5/apache2 Loaded Configuration File /etc/php5/apache2/php.ini Scan this dir for additional .ini files […]
自从几周前我从发行版升级我的发行版之后,我遇到了一个问题。 接收到请求后的数据增加了空闲的时间间隔,如下图所示。 http://i49.tinypic.com/2w5lvr9.png 我已经重新从Ubuntu 10.04服务器(i386)磁盘新鲜,但仍然有相同的问题。 我正在运行一个LigHTTPd,MySQL,PHP5堆栈。 令人惊讶的是,使用lynx进行本地浏览的速度超乎想象。 最初,在重新安装之后,我复制了以前安装的旧configuration文件,但之后重新安装了LigHTTPd并从头开始重新configuration了configuration文件。 我唯一可以find的关联是我试图为我正在testing的脚本安装ionCube和Zend Optimizer,但是我认为它不会再影响看到我重新安装了操作系统。 以防万一,我也删除了Suhosin,但是没有影响。 我想这可能与networking有关,但我不知道从哪里开始。 通过路由器上的MAC地址手动为服务器分配一个IP。 时间似乎是指数级的(这一点)令我感到担忧。 我已经尝试了LigHTTPd和MySQL过程,但是我看不出任何明显的东西,并不是我真的知道我在找什么。 内存和CPU的使用似乎并不普遍,但我不能说它的完美.. 我希望有人经历过相同的事情,或者可以指出我的方向,因为search已经certificate是徒劳的,因为我什么都不知道。 如果需要,可以发布configuration文件。
我们在fastcgi模式下使用Nginx + PHP,并使用PHP-FPM作为cgi进程pipe理器。 在我们的脚本中,我们使用PDO来连接MySQL,而绝对不是在持久模式下。 但是最近我们发现我们在MySQL中仍然有太多的连接,有什么build议(或者任何可能的原因)?
但是我们没有使用任何持久连接。 为什么有很多空闲的连接? 我们注意到使用'show processlist'命令,时间约为4000-8000秒。 这些连接看起来总是“睡眠”。 我们在fast-cgi模式下使用带有PHP的Nginx,并使用PDO库。 有什么build议么?