Questions tagged «mysql»

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

1
更改mysql表注释
我知道mysql 表注释可以在创建时定义为: create table (...)comment='table_comment'; 您可以通过以下方式显示评论: show table status where name='table_name'; 创建表注释后如何更改(更改?)表注释。我的意思是全部删除并重新创建表。
35 mysql  table  comments 

4
如何将MySQL数据库移动到另一个驱动器?
我在本地计算机上使用MySQL 5.5来分析大量政府数据。我创建了一个本地数据库,该数据库位于默认驱动器(Win7 C:驱动器)上。我想将数据存储在E:驱动器(大型eSATA外部驱动器)上。 我应该采取什么步骤?
34 mysql 

3
CPU性能与数据库服务器相关吗?
这是一个纯粹的理论问题。假设我有一个部署在多台服务器上的应用程序。 负载均衡器 多个/可扩展的应用程序服务器 一台(单个)数据库服务器(目前) 在前两个部分,我确实知道要寻找什么。但是数据库服务器呢?我应该寻找哪种硬件? CPU频率与数据库服务器相关吗? 多个核心CPU相关吗? RAM比CPU更重要吗? PS:假设所选数据库是MySQL或PostgreSQL。

5
为什么InnoDB 100x上的简单SELECT速度比MyISAM慢?
我有一个很烦人的问题。我想使用INNODB作为我的主要数据库引擎,而放弃MyISAM,因为我需要前者使用galera-cluster来实现冗余。 我将newbb_post表复制(描述如下)到一个名为的新表中,newbb_innopost并将其更改为InnoDB。这些表当前5,390,146每个都有条目。 在新启动的数据库上运行这些选择(因此此时不涉及缓存!),该数据库会产生以下结果(省略完整的输出,请注意,我什至不要求数据库对结果进行排序): 从newbb_post中选择post.postid,post.attach作为post,而post.threadid = 51506; 。 。 | 5401593 | 0 | | 5401634 | 0 | + --------- + -------- + 设置62510行(0.13秒) 从newbb_innopost中选择post.postid,post.attach作为post,而post.threadid = 51506; 。 。 | 5397410 | 0 | | 5397883 | 0 | + --------- + -------- + 设置62510行(1分22.19秒) 0.13秒至86.19秒(!) 我想知道为什么会这样。我确实在这里阅读了有关InnoDB的Stackexchange的一些答案,并且有人建议将innodb_buffer_pool大小增加到已安装RAM的80%。这不会解决问题,对特定ID的初始查询将至少花费50倍以上的时间,并使整个Web服务器停滞不前,从而对数据库进行连接和查询。之后可能会启动缓存/缓冲区,但是此数据库中有超过100.000个线程,因此很有可能缓存将永远无法容纳要服务的所有相关查询。 上面的查询很简单(没有连接),并且使用了所有键: 从newbb_innopost解释选择post.postid,post.attach作为post在哪里post.threadid = …

5
我应该如何设计友谊表?
如果A是的朋友B,那么我应该同时存储值AB和BA,还是一个就足够了?两种方法的优缺点是什么? 这是我的观察: 如果同时保留两者,则在收到朋友的请求时必须同时更新两者。 如果我没有同时保留两者,那么我发现在JOIN对该表进行多次处理时很难。 目前,我以一种方式保持这种关系。 那么在这种情况下我该怎么办?有什么建议吗?

4
升级生产RDS实例的最佳方法是什么?
我将MySQL小型RDS实例作为生产系统的一部分,我想通过提供的IOPS将其升级到中等实例。 作为老式的DBA,我知道“添加从属;升级为主控;切换客户端”方法,但是AWS承诺提供神奇的一键式升级路径,即“升级实例”,“添加提供的IOPS”。 在测试RDS实例上对此进行了尝试,停机时间过长,恕我直言:中小型升级大约需要5分钟,切换到提供的IOPS大约需要30分钟(!!!)。 这是正常行为吗? 有什么方法可以在不停机的情况下在生产RDS上运行升级吗? 您是否建议采用“停止;创建快照;从快照还原到更大的实例”的方式?
33 mysql  amazon-rds 

6
如何尽可能快地更新MySQL单个表中的1000万行以上?
对大多数表使用MySQL 5.6和InnoDB存储引擎。InnoDB缓冲池大小为15 GB,Innodb DB +索引约为10 GB。服务器具有32GB RAM,并且正在运行Cent OS 7 x64。 我有一张大表,其中包含大约一千万条记录。 我每24小时从远程服务器获取一个更新的转储文件。该文件为csv格式。我无法控制该格式。该文件约为750 MB。我尝试将数据逐行插入MyISAM表中,这花了35分钟。 我只需要从文件中取出10-12行中的每行3个值,然后在数据库中更新它。 实现这样的最佳方法是什么? 我需要每天这样做。 当前Flow是这样的: mysqli_begin_transaction 逐行读取转储文件 逐行更新每个记录。 mysqli_commit 以上操作大约需要30-40分钟才能完成,在执行此操作的同时,还有其他更新正在进行中 超过了锁定等待超时;尝试重新启动事务 更新1 使用加载新表中的数据LOAD DATA LOCAL INFILE。在MyISAM中,花38.93 sec了7分钟5.21秒,而在InnoDB中,花了7分钟。然后我做了: UPDATE table1 t1, table2 t2 SET t1.field1 = t2.field1, t1.field2 = t2.field2, t1.field3 = t2.field3 WHERE t1.field10 = t2.field10 Query OK, …

3
如何加快对2.2亿行的大型表(9 gig数据)的查询?
问题: 我们有一个社交网站,成员可以互相评价兼容性或匹配性。该user_match_ratings表包含超过2.2亿行(9 gig数据或近20 gig索引)。对该表的查询通常显示在slow.log(阈值> 2秒)中,并且是系统中最常记录的慢速查询: Query_time: 3 Lock_time: 0 Rows_sent: 3 Rows_examined: 1051 "select rating, count(*) as tally from user_match_ratings where rated_user_id = 395357 group by rating;" Query_time: 4 Lock_time: 0 Rows_sent: 3 Rows_examined: 1294 "select rating, count(*) as tally from user_match_ratings where rated_user_id = 4182969 group by rating;" Query_time: …

3
将MySQL / Amazon RDS数据库备份到S3的推荐方法是什么?
我有两个目的: 在Amazon Web Services出现区域性问题时进行场外备份。 将生产数据从生产帐单帐户复制到Beta帐单帐户。 当前,亚马逊似乎并没有开箱即用地支持这两种用例之一。 我已经看到提到了mysqldump和xtrabackup(请参阅表单发布)。 我还看到了一个更复杂的过程(在此处记录) 源计费帐户(prod)中的新RDS服务器从最近的备份中分离出来。 在步骤1中启动了一个新的EC2实例,该实例可以访问RDS服务器。 mysqldump用于对该数据库进行备份。 备份已复制到异地位置(S3?)。 在单独的帐户和/或区域中,将启动一个新的RDS服务器。 数据库转储已导入。 提示和建议,不胜感激。

3
为了获得绝对性能,SUM是更快还是COUNT?
这涉及对符合特定条件(例如)的记录数进行计数invoice amount > $100。 我倾向于 COUNT(CASE WHEN invoice_amount > 100 THEN 1 END) 但是,这同样有效 SUM(CASE WHEN invoice_amount > 100 THEN 1 ELSE 0 END) 我本来认为COUNT更可取,原因有两个: 传达意图,这是为了 COUNT COUNT 可能涉及i += 1某个地方的简单操作,而SUM不能依靠其表达式作为简单的整数值。 是否有人对特定RDBMS的区别有特定的事实?

2
适用于MySQL的Amazon RDS与在Amazon EC2实例上安装MySQL
在工作中,我们将所有Web服务器托管在Amazon EC2上,通常使用与Apache Web服务器安装在同一盒子上的MySQL数据库,并通过进行通信localhost。现在,我们需要将数据库迁移到我们系统之一的自己的服务器上。我可以选择两种解决方案:使用Amazon RDS,或仅启动一个新的Amazon EC2盒并在其上安装MySQL。 作为与EC2相同的公司提供的专用数据库服务,RDS似乎应该是显然更好的选择。但是,当我查看这两个选项的价格时(请参见http://aws.amazon.com/ec2/pricing和http://aws.amazon.com/rds/pricing),似乎RDS服务器的成本几乎是对于具有相同规格的设备,其容量是EC2服务器的两倍。 鉴于我自己能够处理备份,并且EC2提供了与RDS相同的按比例扩展实例的能力,因此我完全看不出有任何理由使用RDS代替EC2。但是,似乎我可能遗漏了一些大的东西,因为如果我做对了,没有人会使用RDS。我究竟缺少什么?与在EC2实例上安装自己的数据库相比,RDS有什么优势?
31 mysql  amazon-rds 


9
获取分数表中用户的排名
我有一个非常简单的MySQL表,用于保存高分。看起来像这样: Id Name Score 到目前为止,一切都很好。问题是:如何获得用户等级?例如,我有一个用户Name或Id并想要获得他的排名,其中所有行都按序排列Score。 一个例子 Id Name Score 1 Ida 100 2 Boo 58 3 Lala 88 4 Bash 102 5 Assem 99 在这种情况下,Assem的排名为3,因为他获得了第三高的分数。 查询应返回一行,其中仅包含所需的Rank。
31 mysql  rank 

2
MySQL和窗口函数
似乎MySQL不支持窗口功能。 例如简单:COUNT(*) OVER() AS cnt不起作用。 我不确定这是否也适用于商业版本(我认为社区版本是有限的子集)。 如果没有,如何解决此缺失的功能?

3
字符与整数主键
我正在设计一个包含多个查找表的数据库,其中包含主要实体的可能属性。我正在考虑使用4或5个字符的键来标识这些查找值,而不是自动递增的整数,这样当我将这些属性ID存储在主表中时,我会看到有意义的值,而不仅仅是随机数。 使用字符字段作为主键而不是整数对性能有何影响? 如果这很重要,我正在使用MySQL。 [编辑] 这些查找表具有很少添加的新记录。它们是手动维护的,基于字符的键也是手动创建的。这是一个例子: CUISINES ID Description ----- -------------- CHNSE Chinese ITALN Italian MXICN Mexican

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.