MariaDB社区

标题: MySQL中的已知事宜 [打印本页]

作者: jeff    时间: 2007-10-30 13:38
标题: MySQL中的已知事宜
下面列出了已知问题,更正它们具有较高的优先级:

001207 22:07:56  bdb:  log_flush: LSN past current end-of-log


如果以特定的方式设计查询,使得数据更改是非决定性(通常不推荐,即使在复制之外也同样),主服务器和从服务器上的数据将变得不同。

例如:
当且仅当前述查询没有保证决定行顺序的ORDER BY子句时。

例如,对于不具有ORDER BY的INSERT ... SELECT,SELECT可能会以不同的顺序返回行(它会导致具有不同等级的行,从而导致AUTO_INCREMENT列中的不同数值),具体情况取决于优化器在主服务器和从服务器上所作的选择。


在主服务器和从服务器上,查询将进行不同的优化,仅当:
该问题也会影响使用mysqlbinlog|mysql的数据库恢复。

避免该问题的最简单方法是,为前述的非决定性查询增加ORDER BY子句,以确保总是以相同的顺序保存或更改行。

在将来的MySQL版本中,需要时,我们将自动增加ORDER BY子句。

下面列出了已知的事宜,这些事宜将在恰当的时候更正:


mysql> UPDATE tbl_name SET KEY=KEY+1,KEY=KEY+1;


mysql> SELECT * FROM temp_table, temp_table AS t2;

错误1137:不能再次打开表:'temp_table'


例如:

SELECT DISTINCT mp3id FROM band_downloads

        WHERE userid = 9 ORDER BY id DESC;

以及

SELECT DISTINCT band_downloads.mp3id


        FROM band_downloads,band_mp3

        WHERE band_downloads.userid = 9

        AND band_mp3.id = band_downloads.mp3id

        ORDER BY band_downloads.id DESC;

在第2种情况下,使用MySQL服务器3.23.x,可在结果集中获得2个等同行(这是因为,隐藏ID列中的值可能不同)。

注意,在结果集中,仅对不含ORDER BY列的查询才会出现该情况。



[ 本帖最后由 jeff 于 2007-10-30 17:59 编辑 ]
作者: mysqlkumao    时间: 2008-4-9 19:25





欢迎光临 MariaDB社区 (http://123.56.88.72/) Powered by Discuz! X3.2