Questions tagged «mysql-5.1»

MySQL 5.1版-请出于搜索目的也标记mysql。

6
为什么使用WHERE 1或WHERE 1 = 1?
通常,如果查询语句中不需要条件,则不使用WHERE子句。但是我看到WHERE 1在许多地方都使用了子句,即使没有其他条件也是如此。 为什么要这样做? 执行时间是否有特定的好处? 是否启用其他功能? 使用WHERE 1=1类似于吗?
50 mysql-5.1 

2
错误1114(HY000)表…已满,并且innodb_file_per_table设置为自动扩展
我有一个MySQL数据库,可容纳大量数据(100-200GB-一堆科学测量值)。绝大多数数据存储在一张表中Sample。现在,我正在创建数据库的从属副本,我想innodb_file_per_table在此过程中充分利用的优势。因此,我设置innodb_file_per_table了从属配置,并导入了数据库的转储。令我惊讶的是,它失败了 第5602行的错误1114(HY000):表“样本”已满 该文件Sample.ibd当前约为93GB,分区上有600GB以上的可用空间,因此这不是磁盘可用空间问题。它似乎都没有达到任何类型的文件系统限制(我正在使用ext4)。 如果有任何想法,我将不胜感激,或者可能要调查什么。 更新:我正在使用mysql Ver 14.14 Distrib 5.1.66, for debian-linux-gnu (x86_64)。 SELECT @@datadir; -- returns `/home/var/lib/mysql/` SHOW VARIABLES LIKE '%innodb_data_file_path%'; -- ibdata1:10M:autoextend df -h /home/var/lib/mysql/ 768G 31G 699G 5% /home

1
更改现有的datadir路径
我想更改文件中的datadir路径my.ini。 现有的datadir路径C:/ProgramData/MySQL/MySQL Server 5.1/Data/ 我的C:驱动器大小为30 GB,MySQL数据文件夹占用25 GB。因此,我想将更datadir改为F:/naveen/data。 这可能吗? 我的机器正在运行Windows Server 2003。

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。

1
更新expire_logs_days参数并重新启动sql之后多久会删除旧的binlog?
MySQL 5.1.x | InnoDB | 视窗 我的mysql数据目录开始充满bin日志。 我目前在Windows mysql服务器中配置了以下设置: [mysqld] log-bin server-id=1 binlog-do-db=foodb1 binlog-do-db=foodb2 expire_logs_days=25 我打算将expire_logs_days设置更改为expire_logs_days=10并跳出mysql服务。进行此更改后,我可以期望多长时间后清除旧的bin日志。 这是否仅作为每晚计划任务的一部分进行?还是应该立即进行?


2
innodb_flush_method = O_DIRECT与O_DSYNC性能对具有LVM磁盘分区的ext3的影响
在我的一个生产环境中,我们有两个实例在RedHat集群上运行,并且一个生产实例与该集群相关联。 我们有125G主内存,instance1占用了24G InnoDB缓冲池,instance2占用了12G,这与RedHat集群无关。数据日志和事务日志都位于带有ext3文件系统的LVM磁盘分区上。 为了提高性能和提高I / O吞吐量,我决定更改innodb_flush_method为O_DIRECT。 参考MySQL文档: InnoDB数据和日志文件位于SAN上的位置,已发现将设置innodb_flush_method为O_DIRECT可以使简单SELECT语句的性能降低三倍。 提到高性能MySQL Ver 2和3,它指出InnoDB开发人员使用发现了错误innodb_flush_method=O_DSYNC。O_SYNC并且O_DSYNC类似于fsync()和fdatasync():O_SYNC同步数据和元数据,而O_DSYNC仅同步数据。 如果所有这些看起来都像是在没有任何建议的情况下进行很多解释,则以下是建议: 如果您使用类似Unix的操作系统,并且您的RAID控制器具有备用电池的写缓存,则建议您使用O_DIRECT。如果不是,则默认设置或O_DIRECT将是最佳选择,具体取决于您的应用程序。 谷歌搜索,我得到这个基准测试报告:在O_DSYNCVSO_DIRECT 基准报告: =================== 1B行复杂事务测试,64个线程 * SAN O_DIRECT:读/写请求:31560140(每秒8766.61个) * SAN O_DSYNC:读/写请求:5179457(每秒1438.52) * SAN fdatasync:读/写请求:9445774(每秒2623.66) *本地磁盘O_DIRECT:读/写请求:3258595(每秒905.06) *本地磁盘O_DSYNC:读/写请求:3494632(每秒970.65) *本地磁盘fdatasync:读/写请求:4223757(每秒1173.04。 但是,O_DIRECT禁用OS级别的缓存,可以禁用双重缓存,这会显示出更好的I / O吞吐量。 O_DIRECT而不是一起去O_DSYNC好吗?这两个选项有些令人困惑。哪个选项可以显示出更好的I / O吞吐量并增强性能,而不会对数据,读/写(特别是在生产中)产生任何影响?根据您的个人经验有更好的建议吗? 我可以在帖子中看到Rolando Update : 这两个参数仍然有些混乱。在可以看到大多数使用的生产配置模板的地方O_DIRECT,没有任何推荐的地方O_DSYNC。 系统 MySQL 5.1.51-enterprise-gpl-pro-log 红帽企业Linux服务器5.5版 具有Raid Controller的DELL DRAC,具有电池写回缓存512MB Dell PERC控制器H700带有备用电池(BBU)。 附加信息 mysql>显示类似'innodb_thread_concurrency'的变量; …

4
我可以确保两列的值不相同吗
如果我有一个像这样的桌子 CREATE TABLE foo ( id INT NOT NULL AUTO_INCREMENT, aa INT NOT NULL, bb INT NOT NULL, PRIMARY KEY (id), UNIQUE KEY (aa, bb), CONSTRAINT aa_ref FOREIGN KEY (aa) REFERENCES bar (id), CONSTRAINT bb_ref FOREIGN KEY (bb) REFERENCES bar (id) ) aa != bb除了使用应用程序级逻辑或强制触发器在插入前失败之外,是否有其他方法可以确保?
11 mysql-5.1 

1
为什么mysql 5.5慢于5.1(linux,使用mysqlslap)
my.cnf(5.5和5.1相同): back_log=200 max_connections=512 max_connect_errors=999999 key_buffer=512M max_allowed_packet=8M table_cache=512 sort_buffer=8M read_buffer_size=8M thread_cache=8 thread_concurrency=4 myisam_sort_buffer_size=128M interactive_timeout=28800 wait_timeout=7200 MySQL 5.5: ..mysql5.5/bin/mysqlslap -a --concurrency=10 --number-of-queries 5000 --iterations=5 -S /tmp/mysql_5.5.sock --engine=innodb Benchmark Running for engine innodb Average number of seconds to run all queries: 15.156 seconds Minimum number of seconds to run all queries: 15.031 seconds …

2
使用'name'@'%'向MySQL添加用户失败,错误1396
我只是尝试使用添加新用户到MySQL CREATE USER 'name'@'%' IDENTIFIED BY '...' 但是,它失败并显示以下错误: ERROR 1396 (HY000): Operation CREATE USER failed for 'name'@'%' 仅为本地主机添加用户可以正常工作: CREATE USER 'name'@'localhost' IDENTIFIED BY '...' 我不知道可能是什么问题。我将不胜感激。 (我正在使用mysql Ver 14.14 Distrib 5.1.66。)


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.