Questions tagged «mysql»

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

1
如何在MySQL中交换表?
假设我有一个表foo,其中包含不时计算的一些统计信息。其他查询大量使用它。 这就是为什么我要在其中计算更多最新统计信息foo_new并在计算准备就绪时交换它们。 我可以做 ALTER TABLE foo RENAME foo_tmp; ALTER TABLE foo_new RENAME foo; 但是,如果在foo没有表的情况下查询需要在这两行之间有表,该foo怎么办?我想我必须以某种方式锁定它...还是有另一种方法可以锁定它?

3
为什么InnoDB将所有数据库存储在一个文件中?
MyISAM过去很方便地将每个表存储在相应的文件中。InnoDB在很多方面都取得了进步,但是我不知道为什么InnoDB将所有数据库存储在一个文件中(ibdata1默认情况下)。 我知道InnoDB将按表的各个索引文件映射文件中数据的位置,但是我不明白为什么它将所有数据混合在一个文件中。更重要的是,为什么要混合服务器上所有数据库的数据? MyISAM的一个有趣功能是可以将数据库文件夹复制/粘贴到另一台计算机上,然后使用该数据库(无转储)。

6
每个客户创建数据库会遇到什么问题?
我记得在stackoverflow播客中,Fog Creek为每个客户使用了一个数据库,用于Fogbugz。我认为这意味着Fogbugz On Demand服务器具有成千上万个数据库。 我们才刚刚开始开发Web应用程序,并且有类似的问题要解决(很多拥有自己孤立数据的客户)。 我对每个客户使用数据库有什么问题?我该如何解决? 我的初步想法 每个客户的数据库优势 更简单的数据库架构 更简单的备份-您可以依次备份每个客户,而不会真正影响其他客户。 轻松导出给定的客户数据。 更好的缓存性能-写入更活跃的表之一只会影响执行写入操作的单个客户。 跨硬件更容易扩展。例如,当我们需要从1台服务器转到2台服务器时,我们只需将一半的客户转移到新服务器上。 缺点 MySQL可以应付5,000个数据库吗?性能会糟透吗? 对模式的更改可能很难在所有数据库中复制出来。我们真的真的需要为此制定一个自动化计划,例如对架构进行版本控制以及一个脚本,该脚本可以了解如何将数据库从一个版本移植到另一个版本。 做所有客户共同的事情可能很尴尬或不可能 与上述类似,但是我们想要对所有客户执行的任何分析都是不可能的。例如,我们应如何跟踪所有客户的使用情况?

12
为什么不将主键/外键匹配用于联接?
据我所知,许多DBMS(例如mysql,postgres,mssql)仅使用fk和pk组合来约束对数据的更改,但是它们很少用于本地自动选择要连接的列(就像自然连接使用名称一样)。这是为什么?如果您已经用pk / fk定义了2个表之间的关系,为什么数据库无法弄清楚如果我将那些表联接起来,我想在pk / fk列上联接它们? 编辑:澄清一下: 假设我有一个table1和一个table2。table1在a列上有一个外键,该外键引用了table2的b列上的主键。现在,如果我加入这些表,则必须执行以下操作: SELECT * FROM table1 JOIN table2 ON table1.a = table2.b 但是,我已经使用键定义了table1.a引用table2.b,因此在我看来,让DBMS系统自动使用table1.a和table2.b作为联接列并不难,这样一个人可以简单地使用: SELECT * FROM table1 AUTO JOIN table2 但是,许多DBMS似乎并未实现这样的功能。
48 mysql  sql-server 


5
为什么DROP DATABASE需要这么长时间?(MySQL)
新的CentOS安装。 我正在运行一个大型数据库(2GB的sql文件)的导入,出现了问题。SSH客户端似乎失去了连接,导入似乎冻结了。我使用另一个窗口登录mysql,导入似乎已死,卡在特定的3M行表上。 所以我尝试了 DROP DATABASE huge_db; 15-20分钟后,什么都没有。在另一个窗口中,我做了: /etc/init.d/mysqld restart DROP DB窗口消息:服务器关闭。然后,我实际上重新启动了物理服务器。 重新登录到mysql,检查并且db仍然存在,运行 DROP DATABASE huge_db; 再一次,我已经等了大约5分钟。 再一次,它是全新的安装。的huge_db是唯一的分贝(除系统DBS其他)。我发誓我已经并且很快就放弃了这么大的数据库,但是也许我错了。 我已经成功删除了数据库。花了大约30分钟。另请注意,当我以为mysqldump导入已死时,我认为我弄错了。终端连接丢失,但是我认为该过程仍在运行。我最有可能杀死了导入中间表(3M行表),并且可能杀死了整个数据库的3/4。令人误解的是,“ top”显示mysql仅使用3%的内存,而它似乎应该使用更多的内存。 删除数据库最终花费了30分钟,因此,再次,我可能不必重新启动服务器,并且可能刚刚等待DROP完成,但是我不知道mysql如何响应获取DROP查询。通过mysqldump导入的同一个数据库。 仍然存在问题,为什么删除所有2GB数据库并删除所有db文件并从information_schema中删除对DB的所有引用时,为什么要花30分钟以上的时间来删除2GB数据库?有什么大不了的?
46 mysql  mysqldump 


3
mysql中On Delete Cascade和On Update Cascade之间的区别
我在MySQL数据库中有两个表parent,child。我试图基于父表将外键引用添加到我的子表中。有没有之间的任何显著差异ON UPDATE CASCADE和ON DELETE CASCADE 我的父母表 CREATE TABLE parent ( id INT NOT NULL, PRIMARY KEY (id) ) ENGINE=INNODB; 我的问题是:以下sql查询之间有什么区别。 ON DELETE CASCADE CREATE TABLE child ( id INT, parent_id INT, INDEX par_ind (parent_id), FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE CASCADE ) ENGINE=INNODB; ON UPDATE CASCADE CREATE TABLE child …


3
如何授予用户超级权限?
我已经创建了一个用户,并赋予了user1特权。 `grant all privileges on db1.* to user1@'%' with grant option; 我正在使用mysql工作台将转储导入到我的数据库中。将转储导入数据库db1时,发生错误,指出 ERROR 1227 (42000) at line 49: Access denied; you need (at least one of) the SUPER privilege(s) for this operation 在该转储中,所有表均已成功导入,但是在将例程导入数据库时​​发生错误。我赋予用户1的特权有什么问题。请指教。

1
PostgreSQL和MySQL的可伸缩性限制
我听说诸如MySQL或PostgreSQL之类的非分片关系数据库的性能“突破”了10 TB。 我怀疑这样的限制确实存在,因为Netezza,Greenplum或Vertica等都不会提出这样的限制,但是我想问一下这里是否有人提及量化这些限制的任何研究论文或正式案例研究。

9
是否有像Microsoft的“ SQL Server Profiler”这样的MySQL工具?[关闭]
在MySQL上进行开发时,我真的很想能够启动分析器。我发现SQLyog可以很好地替代Query Analyzer,但是还没有找到像SQL Profiler一样工作的工具。 对于尚未看过Microsoft SQL Profiler的MySQL人员,以下是屏幕截图 在我之前的工作中,我们有一个工具胜过SQL Profiler,甚至为我们提供了堆栈跟踪 有谁知道我提到的与MySQL兼容的任何工具。 (仅供参考,我可以让Altiris Profiler与MySQL一起使用,但是它将涉及运行Windows,而且它并不是真正的Symantec SKU,因此许可确实很棘手)
43 mysql  profiler  tools 

2
MySQL:如何检查与表相关的外键
如何在MySql中查看与表相关的外键? 背景:我想在MySql中删除具有外键约束的表。当我这样做时,我得到: Error Code: 1217. Cannot delete or update a parent row: a foreign key constraint fails 我该如何删除与表相关的外键而使其他人离开。

4
MySQL错误读取通信数据包
在MySQL错误日志中,我看到了如下这样的警告: 120611 16:12:30 [Warning] Aborted connection 2619503 to db: 'db_name' user: 'user_name' host: 'webapp_hostname' (Got an error reading communication packets) 尚未注意到任何数据丢失本身,因此我想知道此警告的含义或原因,以及是否可以解决引起这些问题的问题。这是在RHEL 6.1和MySQL Enterprise 5.5上。
42 mysql  mysql-5.5 

6
用于数据库的SSD与HDD
我正在尝试购买新的服务器以在其上运行MySQL Server。这个新服务器将成为我主机的从属服务器。但是,此服务器将专用于仅报告“大量读取和复杂查询”。 现在,我正在考虑投资固态硬盘,但想知道这是否真的值得。SSD和SATA 7200硬盘之间的差价约为1500美元,并且SSD的磁盘空间较小。如果我确实投资SSD,那么速度会明显吗? 我可以以比购买2(500GB SSD)少$ 1500的价格购买4(500GB SATA 7200) 您能否帮助我做出决定,看看是否值得升级? 我想再次提一提的是,我没有使用query_cache磁盘,因此会有大量磁盘读取。 该服务器将具有32GB的RAM,并将运行Ubuntu 12.04
42 mysql  ssd 

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.