Questions tagged «mysql»

MySQL的所有版本(不是Microsoft SQL Server)。如果与此问题相关,还请添加特定于版本的标记,例如mysql-5.7。


9
哪个DBMS足够快(足以容纳数千名玩家)进行在线游戏?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 3年前关闭。 我目前正在制作MMORPG游戏,该游戏可能同时有数千名玩家在线(可能不是;只是一厢情愿)。首先,我们想使用MySQL,但是我听说它还不够快。 哪个DBMS足够快?它有多像SQL Server(就像我在学校学到的那样)?

3
使用MySQL触发器或事务?
我想问一下您在网站上使用MySQL触发器或事务的意见。 实际上,我有一个payment带有- 的历史记录表UserId | OperationId | Comment | Credits | Sign (debit or credit)。因此,每个付款操作都会插入此表中。 但是,计算用户每次执行操作时的总信用额度将非常耗时。因此,我认为将每个用户的总信用额保留在用户profile表中可能是一个好主意。 这是问题所在。如何确定表格中的总贷方金额profile与payment历史记录表格中的操作保持同步? 我认为使用2种方法: MySQL触发器或 源代码中编码的交易 哪个更可靠?如果我有大型数据库(超过100.000个用户)怎么办? 您对此有何建议? BD MySQL引擎是InnoDB。

2
编辑数据库时来自MySQL的邮件警报
当root或其他人编辑或更新特定数据库时,如何从MySQL获取邮件?它应该触发发送邮件并记录编辑。 我已经尝试了触发器,但无法正常工作。 服务器规格: Ubuntu 10.04 64位 MySQL服务器5.1.41 我尝试过的脚本 #!/bin/sh tail -f /var/log/mysql/mysql.log | egrep 'INSERT|UPDATE|DELETE|root' | mail -s 'backend update' sushanth@example.com 但它不起作用
8 mysql 

1
MySQL是否仍以这种方式处理索引?
在MySQL中删除重复索引需要花费相当长的时间,因此在等待期间,我进行了搜索并找到了2006年以来的这篇文章,谈论MySQL如何处理ADD和建立DROP索引。 如果表T是具有四个索引(ndx1,ndx2,ndx3,ndx4)的MySQL表,并且您想“更改表T的删除索引ndx3;” 这正是幕后发生的事情: 1)MySQL将T.MYD复制到临时表,即S.MYD和零字节的S.MYI。2)MySQL确实在表S上添加了索引ndx1(...);3)MySQL确实在表S上添加了索引ndx2(...);4)MySQL确实在表S上添加了索引ndx4(...);5)MySQL删除T.MYD并删除T.MYI 6)MySQL将S.MYD重命名为T.MYD,并将S.MYI重命名为T.MYI 这仍然是真的吗?他的建议仍然有效吗? 给定具有四个索引(ndx1,ndx2,ndx3,ndx4)的同一MyISAM表T,并且您要“更改表T的删除索引ndx3;” 试试这个代替: 1)创建像T一样的表T1;这将创建一个具有索引ndx1,ndx2,ndx3和ndx4的空表T1。2)alter table T1丢弃索引ndx3; 这会将索引ndx3丢弃在空T1上,该索引应该是瞬时的。3)插入T1中,从T中选择*;这将填充表T并一次性加载T1的所有三(3)个索引。4)放表T表;5)将alter table T1重命名为T; 大家如何处理大表中的索引添加和删除?

1
MySQL具有延迟的高可用性,故障转移和复制
我们正在实施在MySQL上运行的新CMS(Drupal 6.x)。我们有两个数据中心-主数据中心和辅助数据中心,它们之间的延迟已知。我们不确定我们将运行哪个MySQL版本...社区还是企业,但这是一个待定。看来我们将运行InnoDB引擎,操作系统将为RedHat EL 5.5。主服务器将处于活动状态,而辅助服务器将处于被动或热备用状态。 我想在两个数据中心的MySQL中实现复制,高可用性和自动故障转移。 故障转移到辅助服务器后,当我们故障回复到主服务器时,我们希望将数据从辅助数据库快速而完整地同步到主数据库,以便我们可以继续从主服务器提供内容。 我很想知道可以使用哪些技术/工具/最佳实践来解决/解决这些问题。同样,任何陷阱或啊哈时刻也将不胜感激。我已经阅读了有关MySQL复制,群集和Tungsten和Dolphinics等某些第三方工具的资料,但是我不确定什么是最佳方法。 感谢您的时间! KM

4
如何在MySQL中执行复杂的GROUP BY?
我有一个表,其中包含几个进入其他表的键(每个键由多个列组成)。我希望能够将具有相同键的行分组在一起,但是我不想将所有行分组在一起。这不是简单GROUP BY的键,而是我希望能够使分组的数量为10。因此,如果某个特定键出现50次,则当我进行分组时(5组,共10组),我将获得5个结果。我也希望该分组在密钥内随机发生。 我不知道直接执行此操作的方法,而且我想出的环形交叉路方法无法正常工作。我想到的回旋解决方案是为每个键创建一个新列,该键将是一个整数,以使值i表示该ith键的出现(但以随机顺序)。然后,我可以进行整数除法,以使键中的每n个(例如10个)行具有相同的值,并且可以GROUP BY对该值进行a运算。 有没有更直接的方法来完成我刚刚描述的内容?这很尴尬,在创建新的索引列时遇到了问题(正如我在此问题中所述)。 编辑:首先请注意,这是针对MySQL。如果我的目标不清楚,我将添加一个示例。MySQL文档显示了一种接近目标的方法: CREATE TABLE animals ( grp ENUM('fish','mammal','bird') NOT NULL, id MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, PRIMARY KEY (grp,id) ) ENGINE=MyISAM; INSERT INTO animals (grp,name) VALUES ('mammal','dog'),('mammal','cat'), ('bird','penguin'),('fish','lax'),('mammal','whale'), ('bird','ostrich'); SELECT * FROM animals ORDER BY grp,id; 这将创建一个表,该表虽然不是我想要的,但会变得接近: +--------+----+---------+ | grp | id | …

1
关系是否比没有效率的大桌子慢?
我在工作中被要求多次违反“第一种标准格式”(使用空/空值重复列中的组),“是为了提高计算机处理能力”。简而言之,“学生”表应至少包含8个空字段(例如电话:phone1,电话2,电话3 ...),而不是我的建议-包含电话号码(以及其他可能的元数据)的“电话”表外键是学生证号。我的老板说,最好以这种方式存储它们,因为“ CPU周期更少,这在Web平台中很重要”,而不是使用关系。我说,在最坏的情况下,它可以忽略不计。 在该示例中,使用关系(假设表在中等大小的Web应用程序中充满了很多记录)比使用这种表架构慢得多?

2
每当phpMyAdmin加载时,在InnoDB上的COUNT(*)
这是一个已知的问题,innodb运行缓慢 SELECT count(*) FROM Table 因此,我避免了这一点。但是我注意到,每当我登录phpmyadmin时,它将自动count(*)为我的具有19k行的innodb表执行a ,这可能需要一分钟的时间来执行。但是,count(*)对于其他具有400万行的innodb表,它不会启动。 在phpmyadmin中,“记录”列下的另一个线索是19k行表的记录数显示了确切的值,而400万行表显示了大约的值。 我了解innodb表可以估算行数。但是似乎对于较小的表(在这种情况下,行数为19k),phpmyadmin决定做一个a,count(*)而不是仅仅给出一个估计。 问题是,有没有办法阻止phpmyadmin在我的innodb表上进行这种计数?每当我刷新phpmyadmin屏幕时,只需给出一个估计值而不用进行昂贵的行计数就可以了。
8 mysql  innodb 

3
MySQL使用什么机制在Windows Server 2008上计划备份?
在Windows Server 2008上运行的MySQL Server(v5.1.45-community)上计划数据库备份时,使用什么机制触发备份运行?我认为它正在使用Windows Task Scheduler,但这些备份没有任何明显的任务。SQL Server使用单独的代理服务。MySQL中有类似的东西吗? 其他信息:备份是使用MySQL Administrator设置的。我知道如何安排备份,但是它们没有运行,并且我正在寻找有关从哪里开始解决问题的见解。
8 mysql  backup  windows 

2
将PRIMARY KEY添加到大型InnoDB表的好方法是什么?
在使用InnoDB存储引擎的MySQL 5.5中,我有一个包含约3000万行的表。该表具有一个外键,该外键链接到具有约300万行的另一个表。 我想在较大的表中添加一个主键,但是不确定如何最好地做到这一点。我没有可用于此的现有列(或一组列),那么该如何处理? 我已经看到了一些对内部InnoDB记录ID的引用,但是没有找到它是否可以访问。 否则,也许我将需要转储并重新加载数据,并手动添加ID。 谢谢。

3
更改了max_allowed_pa​​cket并仍然收到“ Packet Too Large”错误
我使用mysqldump创建用于备份目的的平面文件。我已使用此文件在备用服务器上重新创建数据库。我在命令行上通过ssh运行了导入过程,但收到多个Packet too Large错误。 我用更大的max_allowed_pa​​cket(即1000M)重新启动了mysql,但仍然收到错误。我什至尝试在导入文件中设置max_allowed_pa​​cket,仍然收到错误。 有没有一种方法可以确保设置了max_allowed_pa​​cket和/或使用mysqldump来创建不会引起此问题的文件? 以供参考: 未压缩的mysqldump文件约为2GB 数据库类型为INNODB

2
如何搜索以查看系统上是否存在MySQL用户?
我找不到用户是show grants for 'username'@'localhost''因为我认为用户名可能略有不同,所以我想对所有数据库用户进行通配符搜索。我怎样才能做到这一点? 更新:为澄清起见,我在想也许我还不是100%清楚。通过通配符,我的意思是我希望能够仅搜索一部分用户名,或者搜索名称匹配模式的所有用户。在系统上,我需要有超过5k的用户,尽管这并不会造成很大的性能损失,但我也不想一次浏览一次。
8 mysql 

5
MySQL:以前缀开头的DROP TABLE
示例:我有30多个表以前缀“ dp_”开头,约有12个表以“ ex_”开头。 问题:如何在一个查询中删除所有以“ dp_”开头的表?
8 mysql 

3
通过使用存储过程处理数据而不是将数据存储到检索后的函数中,是否可以提高性能?
标题进行了总结。我对PHP相当满意,并且可以轻松地使用MySQL的值来使其满足我的需要,但是为了扩展我的知识,我一直在想,这是否可能是一种更有效的技术。长跑。它们是否相等(由于最后的处理量大致相同),还是在某些情况下一个呈现出明显的优势?

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.