+----------+-------------+------+-------+---------+-------+| Field | Type | Null | Key | Default | Extra |+----------+-------------+------+-------+---------+-------+| siteid | int(11) | No | true | 10 | || citycode | smallint(6) | No | true | N/A | || username | varchar(32) | No | true | | || pv | bigint(20) | No | false | 0 | SUM |+----------+-------------+------+-------+---------+-------+
ALTER TABLE table1 ADD COLUMN uv BIGINT SUM DEFAULT '0' after pv;
提交成功后,可以通过以下命令查看作业进度:
SHOW ALTER TABLE COLUMN;
当作业状态为 FINISHED,则表示作业完成。新的 Schema 已生效。
ALTER TABLE 完成之后, 可以通过 DESC TABLE 查看最新的 Schema。mysql> DESC table1;+----------+-------------+------+-------+---------+-------+| Field | Type | Null | Key | Default | Extra |+----------+-------------+------+-------+---------+-------+| siteid | int(11) | No | true | 10 | || citycode | smallint(6) | No | true | N/A | || username | varchar(32) | No | true | | || pv | bigint(20) | No | false | 0 | SUM || uv | bigint(20) | No | false | 0 | SUM |+----------+-------------+------+-------+---------+-------+5 rows in set (0.00 sec)
CANCEL ALTER TABLE COLUMN FROM table1
更多帮助,可以参阅 HELP ALTER TABLE。+----------+-------------+------+-------+---------+-------+| Field | Type | Null | Key | Default | Extra |+----------+-------------+------+-------+---------+-------+| siteid | int(11) | No | true | 10 | || citycode | smallint(6) | No | true | N/A | || username | varchar(32) | No | true | | || pv | bigint(20) | No | false | 0 | SUM || uv | bigint(20) | No | false | 0 | SUM |+----------+-------------+------+-------+---------+-------+
ALTER TABLE table1 ADD ROLLUP rollup_city(citycode, pv);
提交成功后,可以通过以下命令查看作业进度:SHOW ALTER TABLE ROLLUP;,当作业状态为 FINISHED,则表示作业完成。
Rollup 建立完成之后可以使用 DESC table1 ALL 查看表的 Rollup 信息。mysql> desc table1 all;+-------------+----------+-------------+------+-------+--------+-------+| IndexName | Field | Type | Null | Key | Default | Extra |+-------------+----------+-------------+------+-------+---------+-------+| table1 | siteid | int(11) | No | true | 10 | || | citycode | smallint(6) | No | true | N/A | || | username | varchar(32) | No | true | | || | pv | bigint(20) | No | false | 0 | SUM || | uv | bigint(20) | No | false | 0 | SUM || | | | | | | || rollup_city | citycode | smallint(6) | No | true | N/A | || | pv | bigint(20) | No | false | 0 | SUM |+-------------+----------+-------------+------+-------+---------+-------+8 rows in set (0.01 sec)
CANCEL ALTER TABLE ROLLUP FROM table1;。
Rollup 建立之后,查询不需要指定 Rollup 进行查询。还是指定原有表进行查询即可。程序会自动判断是否应该使用 Rollup。是否命中 Rollup可以通过 EXPLAIN your_sql; 命令进行查看。
更多帮助,可以参阅 HELP ALTER TABLE。Memory limit exceeded 错误,一般是超过内存限制了。遇到内存超限时,用户应该尽量通过优化自己的 sql 语句来解决。如果确切发现2GB 内存不能满足,可以手动设置内存参数。
显示查询内存限制:mysql> SHOW VARIABLES LIKE "%mem_limit%";+---------------+------------+| Variable_name | Value |+---------------+------------+| exec_mem_limit| 2147483648 |+---------------+------------+1 row in set (0.00 sec)
exec_mem_limit 的单位是 byte,可以通过 SET 命令改变 exec_mem_limit 的值。如改为 8GB。
SET exec_mem_limit = 8589934592;mysql> SHOW VARIABLES LIKE "%mem_limit%";+---------------+------------+| Variable_name | Value |+---------------+------------+| exec_mem_limit| 8589934592 |+---------------+------------+1 row in set (0.00 sec)
SET GLOBAL exec_mem_limit = 8589934592;。设置完成后,断开 session 重新登录,参数将永久生效。mysql> SHOW VARIABLES LIKE "%query_timeout%";+---------------+-------+| Variable_name | Value |+---------------+-------+| QUERY_TIMEOUT | 300 |+---------------+-------+1 row in set (0.00 sec)
SET query_timeout = 60;SET GLOBAL 修改全局有效。mysql> select sum(table1.pv) from table1 join table2 where table1.siteid = 2;+--------------------+| sum(`table1`.`pv`) |+--------------------+| 10 |+--------------------+1 row in set (0.20 sec)
mysql> select sum(table1.pv) from table1 join [broadcast] table2 where table1.siteid = 2;+--------------------+| sum(`table1`.`pv`) |+--------------------+| 10 |+--------------------+1 row in set (0.20 sec)
mysql> select sum(table1.pv) from table1 join [shuffle] table2 where table1.siteid = 2;+--------------------+| sum(`table1`.`pv`) |+--------------------+| 10 |+--------------------+1 row in set (0.15 sec)
jdbc:mysql://[host:port],[host:port].../[database][?propertyName1][=propertyValue1][&propertyName2][=propertyValue2]...
http://dev.mysql.com/doc/refman/5.6/en/mysql-proxy-using.html文档反馈