相关疑难解决方法(0)

263
推荐指数
10
解决办法
27万
查看次数

MySQL 查询优化器从哪里读取索引统计信息?

我正在尝试确定 MySQL 优化器在估计(准备)查询的成本时从何处获取可用于表的索引列表。

mysql index-statistics

16
推荐指数
2
解决办法
1万
查看次数

防止查询等待表级锁的方法

将客户的数据库移动到额外的服务器后,我们遇到了问题。这应该会对站点的性能产生积极的影响,但是 MyISAM 中的表锁定存在问题。(我听说过使用 InnoDB 代替 MyISAM,但我们不能在不久的将来更改引擎)。
我们可以发现它是一个更新查询,当主持人在文章站点上激活评论时执行该查询。这是过程:

  • 处理更新查询 SET status = 1 WHERE id = 5(设置索引)
  • 页面缓存文件被删除

此时整个页面变得缓慢。数据库本身忙了几分钟。我取了几次进程列表,看到大约 60 个不同选择查询的条目,它们都处于等待表级锁定的状态。

1.我不明白为什么表上的这个更新article_comments会影响表的选择语句article以等待表级锁。在 processlist 中,几乎所有等待的查询都来自该表。我已经读过更新/插入比选择更受欢迎的事实,这可能会导致此类问题,但是当评论被激活时,文章表本身不会更新,因此选择不应该等待。我误解了吗?
2. 除了更改为 InnoDB 之外,还有什么可以防止这种行为或至少是为了获得更好的平衡吗?我对在将数据库移动到新服务器之前没有出现这个问题感到非常恼火。我想有一些配置错误,但我不知道如何识别。

mysql myisam performance mysql-5.5 locking

10
推荐指数
2
解决办法
7万
查看次数

为什么 MyISAM 支持 FULLTEXT Searching 而 InnoDB 不支持?

我知道 MyISAM 和 InnoDB 引擎之间的基本区别。在 MySQL 5.6 beta 中,InnoDB 将支持全文搜索。但是,我想知道为什么以前版本的 InnobDB 不支持 FTS?我的猜测是因为表存储格式或数据索引方式。抱歉我的无知。

mysql innodb myisam full-text-search

7
推荐指数
1
解决办法
2577
查看次数

什么时候从 MyISAM 切换到 InnoDB?

我们有一个 MySQL 5.0 服务器,以 MyISAM 的形式运行所有表。我们有两个奴隶,在上个月,我们已经升级到 MySQL 5.5。他们的表也仍然是 MyISAM。

我原来的计划是把5.0的master升级到5.5,然后转成InnoDB。现在我想知道,在升级之前开始是否更有意义?我一直很谨慎,因为我听说 5.5 下的 InnoDB 比 5.0 下的 InnoDB 快得多。这是没有根据的,我现在应该开始吗?

mysql innodb myisam mysql-5.5

7
推荐指数
1
解决办法
7255
查看次数

如何优化混合 InnoDB 和 MyISAM 表空间的 MySQL 服务器的 my.cnf?

我有一个数据库,由于一些问题,我需要将一些表从 MyISAM 转换为 InnoDB。

我基本上是这样做的:

set sql_log_bin = 0; 

set sql_mode = 'STRICT_ALL_TABLES';

ALTER TABLE  `table1` ENGINE = INNODB;

ALTER TABLE  `table2` ENGINE = INNODB;

ALTER TABLE  `table3` ENGINE = INNODB;

ALTER TABLE  `table4` ENGINE = INNODB;

ALTER TABLE  `table5` ENGINE = INNODB;

ALTER TABLE  `table6` ENGINE = INNODB;
Run Code Online (Sandbox Code Playgroud)

它工作正常,但据我所知,我现在应该重新配置 my.cnf 然后重新启动 mysql 服务器,对吗?

如果服务器同时包含 MyISAM 和 InnoDB 表,我应该如何调整 my.cnf 文件?

mysql innodb myisam my.cnf

6
推荐指数
2
解决办法
3107
查看次数

MySQL 高 CPU 使用率(MyISAM 表索引)

我有一个继承的 MySQL 数据库的问题。mysqld 有时会使用高达 2300% 的 CPU。唯一的解决方案是服务 mysql stop 并在表上运行 myisamchk -r。修复索引后,我启动 MySQL,一切正常。

关于永久解决方案的任何想法?

编辑(来自评论):

使用 5.5.29-0ubuntu0.12.04.2-log

key_buffer = 16M 
max_allowed_pa​​cket = 16M 
线程堆栈 = 128K 
线程缓存大小 = 8 
myisam-recover = 备份 
最大连接数 = 500 
#table_cache = 512 
#thread_concurrency = 10 
query_cache_limit = 1M 
query_cache_size = 16M 
SELECT SUM(index_length) ndxsize 
FROM information_schema.tables 
WHERE engine='MyISAM'
Run Code Online (Sandbox Code Playgroud)

返回

+-----------+ 
| ndxsize |
+-----------+
| 59862016 |
+-----------+ 
SELECT SUM(data_length+index_length)/power(1024,2) datndxsize 
FROM information_schema.tables 
WHERE engine='MyISAM'
Run Code Online (Sandbox Code Playgroud)

返回:

+--------------------+ 
| 数据大小 |
+--------------------+
| 488.69915199279785 | …

mysql myisam

3
推荐指数
1
解决办法
7520
查看次数