Questions tagged «mysql»

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

6
从mysqldump加载数据的速度较慢
我有一个中等大小的MySQL数据库,其中包含大约30个表,其中一些是1000万条记录,大约是1亿条。将mysqldump所有表(为独立的文件)的速度也相当快,也许需要20分钟。它产生约15GB的数据。最大的转储文件在2GB范围内。 当我将数据加载到另一台6核8GB机器上的MySQL中时,这将花费很多时间。轻松12个时钟小时或更长时间。 我只是运行mysql客户端来加载文件,即 mysql database < footable.sql 直接与文件直接从mysqldump中移出 mysqldump database foo > footable.sql 显然我做错了。我从哪里开始,以便可以在合理的时间内完成? 我没有在转储或负载上使用任何开关。
21 mysql  mysqldump 

1
关于MySQL innodb_flush_method变量的说明
首先,让我承认我对硬盘的内部运行情况一无所知。因此,当我阅读有关变量innodb_flush_method的手册时,我感到困惑。我可以用外行的术语来解释O_DSYNC和O_DIRECT的区别,以及如何知道这是否是数据库服务器上的性能问题。 我的设置上的一些统计信息:运行MySQL 5.1.49-64位的Mac OSX 10.6(32位内核,因为体系结构已过时)(希望它可以让我使用内存)。8GB RAM,〜6GB innodb数据/索引。
21 mysql  innodb 



1
带有INSERT的mysqldump…ON重复
我想将数据从一个数据库合并到另一个数据库。因此,我使用创建转储,mysqldump然后将其导入到另一个数据库(具有相同的表结构)。在这种情况下,我没有任何问题(例如重复的条目或其他东西)。 但是我出于测试目的进行了一些合并,稍后将进行最终合并。因此,我想执行几次合并(数据可能会更改)。请注意,我表中的行永远不会删除,只能插入或更新。 我可以使用ON DUPLICATE选项创建mysqldump吗?还是可以合并插入新数据并更新修改后数据的转储? 当然,我可以ON DUPLICATE手动插入转储中,但是我想使合并过程自动化。


1
MySQL解释中的filter的含义是什么?
如此处的MySQL文档所述: 已过滤的列指示将被表条件过滤的表行的估计百分比。也就是说,行显示了检查的行的估计数,行×过滤后的行数/ 100显示了将与以前的表连接的行数。在MySQL 5.7.3之前,如果使用EXPLAIN EXTENDED,则会显示此列。从MySQL 5.7.3开始,默认情况下启用扩展输出,并且EXTENDED关键字是不必要的。 我还是不明白。“过滤”在这里是什么意思?我们可以从本专栏获得什么信息? 例如,当我开始查询时,某些查询将显示100,而另一些则显示18或任何低于100的查询。 +-------------+-------+--------+---------+---------+------+----------+ | select_type | table | type | key | key_len | rows | filtered | +-------------+-------+--------+---------+---------+------+----------+ | PRIMARY | a | range | search | 4 | 174 | 18.00 | <-- | PRIMARY | b | eq_ref | PRIMARY | …

1
MySQL为表中的每个记录计数来自另一个表的行
SELECT student.StudentID, student.`Name`, COUNT(attendance.AttendanceID) AS Total FROM student LEFT JOIN attendance ON student.StudentID = attendance.StudentID 我正在尝试计算最后一行,但是它计算所有结果并返回一个结果 我收到类似 因为有多个记录,因为K1052280的出勤ID中有两个条目,我想对它们进行计数并返回编号。就像是
21 mysql  select  count 

3
生产中从INT到BIGINT的ALTER主键列(MySQL 5.6.19a)
生产数据库中的某些INNODB表即将达到INT AUTO_INCREMENT限制2147483647,我们需要将它们更改为BIGINT,否则写入将开始失败。 这些表位于在Amazon RDS上运行的生产MySQL 5.6.19a数据库中。 我们如何做这样的ALTER,而又不中断一直在发生的生产读取和插入? ALTER TABLE MYTABLECHANGE id idBIGINT NOT NULL AUTO_INCREMENT; 这是该表的DDL: CREATE TABLE `MYTABLE` ( `id` int(11) NOT NULL AUTO_INCREMENT, `siteId` int(11) NOT NULL, `filter` varchar(10) NOT NULL DEFAULT 'ALL', `date` varchar(10) NOT NULL, `cards` varchar(250) NOT NULL, `apples` varchar(45) NOT NULL, `carrots` varchar(45) NOT NULL, …
20 mysql  innodb 

4
理解INNODB缓冲池统计信息
阅读完mysql文档中的此页后,我试图弄清当前InnoDB的用法。目前,我们为缓冲池分配了6GB的RAM。我们的数据库大小大致相同。这是show engine innodb status\G(我们正在运行v5.5)的输出 ---------------------- BUFFER POOL AND MEMORY ---------------------- Total memory allocated 6593445888; in additional pool allocated 0 Dictionary memory allocated 1758417 Buffer pool size 393215 Free buffers 853 Database pages 360515 Old database pages 133060 Modified db pages 300 Pending reads 0 Pending writes: LRU 0, flush list …

1
对于相同的模式/查询,MySQL和PostgreSQL之间的性能差异[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 我是一名新手DBA,并且我在Microsoft SQL Server中有经验,但是我想跳到FLOSS。 我正在建立一家公司,我们用Postgres后端开发了一个应用程序(PHP),并且还进行了一些与MySQL比较的测试。我们观察到MySQL的速度是PostgreSQL的两倍。 我进行了明显的性能测试: 表中的相同列,具有等效的列数据类型。 行数相同。 两者中的索引相同(包括主键)。 CPU负载处于空闲状态,而Postgres机器则要好得多。 和相同的查询(显然)。 我究竟做错了什么? PS:我阅读了许多有关数据库引擎性能调整的“ howtos”。 PS(2):我们在MySQL数据库上使用InnoDB(每个表一个文件)。 嗨,垫子! 我做了三个常见的选择(也是最难的)查询。 关于磁盘的问题,肯定是不一样的。在Postgres中,它是SSD(快三倍)。 MySQL缓存数据: +------------------------------+----------------------+ | Variable_name | Value | +------------------------------+----------------------+ | binlog_cache_size | 32768 | | have_query_cache | YES | | key_cache_age_threshold | 300 | | key_cache_block_size | 1024 | | key_cache_division_limit …

6
计算连续两列或多列超过某个值的位置[篮球,双倍双倍,三倍双倍]
我玩篮球游戏,它允许将其统计信息输出为数据库文件,因此可以从中计算出在游戏中未实现的统计信息。到目前为止,我可以很轻松地计算出我想要的统计数据,但是现在我遇到了一个问题:从一个赛季的比赛统计数据中计算出一个球员本赛季创造的双打和/或双打的数量。 双精度双精度和三重精度双精度的定义如下: 双双: 双打被定义为一种表现,其中玩家在游戏中累积五个统计类别中的两个统计的两位数总数(点,篮板,助攻,抢断和盖帽)。 三双: 三重双打被定义为一种表现,其中玩家在游戏中五个统计类别中的三个统计点(得分,篮板,助攻,抢断和盖帽)中累计两位数。 四重双(为清楚起见添加) 四重双打是指在游戏中,玩家在五个统计类别中的四个统计类别中(得分,篮板,助攻,抢断和盖帽)累计两位数的表现。 “ PlayerGameStats”表存储了玩家玩的每个游戏的统计信息,外观如下: CREATE TABLE PlayerGameStats AS SELECT * FROM ( VALUES ( 1, 1, 1, 'Nuggets', 'Cavaliers', 6, 8, 2, 2, 0 ), ( 2, 1, 2, 'Nuggets', 'Clippers', 15, 7, 0, 1, 3 ), ( 3, 1, 6, 'Nuggets', 'Trailblazers', 11, …

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:树层次查询
此问题是从Stack Overflow 迁移而来的,因为可以在Database Administrators Stack Exchange上回答。 迁移 7年前。 MySQL中的一个树内的子树 在我的MYSQL中Database COMPANY,我具有一个Table: Employee递归关联,一个雇员可以是其他雇员的老板。A self relationship of kind (SuperVisor (1)- SuperVisee (∞) )。 查询创建表: CREATE TABLE IF NOT EXISTS `Employee` ( `SSN` varchar(64) NOT NULL, `Name` varchar(64) DEFAULT NULL, `Designation` varchar(128) NOT NULL, `MSSN` varchar(64) NOT NULL, PRIMARY KEY (`SSN`), CONSTRAINT `FK_Manager_Employee` …

2
设置innodb_buffer_pool是什么,为什么?
我有170GB的InnoDB索引和数据。 我必须重新调整innodb_buffer_pool大小才能获得更好的性能.InnoDB表的最大表大小(Index + data)为28GB。 那么innodb_buffer_pool的最佳大小应该是多少。 更新 我们将要将此本地数据库迁移到ec2,因此将根据innodb的当前统计信息设置RAM,这就是为什么我需要缓冲池的大小,以便在那里可以有可用RAM的原因。 每个表的文件已启用。 我正在使用Linux机器。
20 mysql  innodb 

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.