相关疑难解决方法(0)

MySQL对于alter table查询来说非常慢

为什么只需更新此表以添加列需要一个多小时?该表有15M行.它有2个索引和一个主键.ALTER TABLE查询现在处于"复制到tmp表"状态1小时15分钟.

ALTER TABLE `frugg`.`item_catalog_map` 
ADD COLUMN `conversion_url` TEXT NULL DEFAULT NULL
Run Code Online (Sandbox Code Playgroud)

表:

mysql> describe item_catalog_map;
+------------------------+---------------+------+-----+---------+-------+
| Field                  | Type          | Null | Key | Default | Extra |
+------------------------+---------------+------+-----+---------+-------+
| catalog_unique_item_id | varchar(255)  | NO   | PRI | NULL    |       |
| catalog_id             | int(11)       | YES  | MUL | NULL    |       |
| item_id                | int(11)       | YES  | MUL | NULL    |       |
| price                  | decimal(10,2) | YES  |     | 0.00    |       |
+------------------------+---------------+------+-----+---------+-------+

mysql> …
Run Code Online (Sandbox Code Playgroud)

mysql sql alter-table

50
推荐指数
5
解决办法
6万
查看次数

MySQL在大表中添加列的性能

我在本地安装了InnoDB的MySQL 5.5.37和Ubuntu 13.10上的apt-get.我的机器是台式机上的i7-3770 + 32Gb内存+ SSD硬盘.对于仅包含150万条记录的表"mytable",以下DDL查询需要超过20分钟(!):

ALTER TABLE mytable ADD some_column CHAR(1) NOT NULL DEFAULT 'N';
Run Code Online (Sandbox Code Playgroud)

有没有办法改善它?我检查了

show processlist;
Run Code Online (Sandbox Code Playgroud)

它显示它出于某种原因正在复制我的表格.令人不安的是令人不安的.有没有办法关掉这个副本?是否有其他方法可以提高向大表添加列的性能?

除此之外,我的数据库相对较小,只有1.3Gb转储大小.因此它(理论上)应该100%适合记忆.

有设置可以帮助吗?迁移到Precona会改变一切吗?

补充:我有

innodb_buffer_pool_size = 134217728
Run Code Online (Sandbox Code Playgroud)

mysql performance ddl database-performance

12
推荐指数
3
解决办法
2万
查看次数

如何在mysql中使用show columns query时只选择fieldname

我使用此查询来选择给定表中的字段.是否可以只选择字段名而不是表的整个结构?

SHOW COLUMNS FROM student
Run Code Online (Sandbox Code Playgroud)

mysql

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