Questions tagged «mysql-5.0»

6
在30,000,000行表上的DELETE命令未完成
我继承了一个数据库,并希望清理并加快它的速度。我有一个表,其中包含30,000,000行,由于代表程序员的错误,其中许多行都是垃圾数据。在添加任何新的,更优化的索引之前,我已将表从MyISAM转换为InnoDB,并希望删除很多包含垃圾数据的行。 数据库是MySQL 5.0,我具有对该服务器的root访问权限。我首先通过Adminer运行这些命令,然后通过phpMyAdmin运行,结果均相同。 我正在运行的命令是, DELETE FROM `tablename` WHERE `columnname` LIKE '-%' 本质上,删除此列中以破折号开头的所有内容-。 它运行大约3-5分钟,然后当我查看进程列表时,它就消失了。 然后我跑 SELECT * FROM `tablename` WHERE `columnname` LIKE '-%' 它返回数百万行。 为什么我的删除语句没有完成? PS,我知道MySQL 5.0是过时的。我正在努力将数据库移至MySQL 5.6 w InnoDB(也许是MariaDB 10 w XtraDB),但是直到发生这种情况之前,我一直希望使用DB来解决此问题。 - 编辑已删除,请参阅我的答案。

2
我们可以在MySQL 5.0 Replication中做什么来解决带宽问题?
我正在开发一个在客户端PC(Win)上运行的应用程序,该PC配置有MySQL服务器5.1实例,该实例将充当远程主服务器的只读从属服务器。远程主服务器有几十个模式,但是每个客户端只需要一个模式,因此我在my.ini中提供了copy-do-db设置,以仅复制客户端所需的模式。复制是可行的,但是当我们的客户进入仅通过3G无线访问互联网(按数据用量收费)的地区时,他们很快就会超出数据计划的限制,并遇到了昂贵的问题。 据我了解,MySQL将所有模式的所有事务都写入单个binlog文件中,这意味着每个客户端必须下载在主服务器上的每个模式上执行的所有事务,然后一旦下载,则对每个复制应用数据库过滤器- 客户端的my.ini文件中的do-db设置。 为了最大程度地减少这种低效率,我采用了slave_compressed_protocol = 1设置,该设置似乎将传输的数据减少了50%,但仍然导致我们的客户的数据流量迅速超过了3G账单。 我无法想象我是唯一面对这个问题的人,所以我敢肯定,通过设置x = y,我将获得大量有关如何实现这一目标的答案。但是,我找不到有关这种设置的任何文档,也找不到推荐的方法。 到目前为止,这是我对可能的解决方案的想法,请提供反馈或替代路线: 为每个模式设置“代理”从属(在不同的框上,或在具有不同的MySQL实例/端口的同一框上) 配置代理从属服务器,使其仅复制客户端希望复制的一个数据库。 将客户端的MySQL实例配置为相应代理从属的从属。 这应该导致客户端仅提取其架构的binlog数据。不利的一面(据我所知)是,它极大地增加了我们设置的复杂性,可能使其更加脆弱。 有什么想法吗?这种方法还能行吗? 注意,我们正在RedHat上运行MySQL 5.0服务器,但是如果它可以解决的话,我们可以升级到5.5。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.