Questions tagged «mysql»

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

1
MySQL InnoDB死锁,用于2个简单的插入查询
对于这两个插入查询,我有一个死锁: insert into PlayerClub (modifiedBy, timeCreated, currentClubId, endingLevelPosition, nextClubId, account_id) values (0, '2014-12-23 15:47:11.596', 180, 4, 181, 561) insert into PlayerClub (modifiedBy, timeCreated, currentClubId, endingLevelPosition, nextClubId, account_id) values (0, '2014-12-23 15:47:11.611', 180, 4, 181, 563) 这是InnoDB状态: ------------------------ LATEST DETECTED DEADLOCK ------------------------ 2014-12-23 15:47:11 1f4c *** (1) TRANSACTION: TRANSACTION 19896526, ACTIVE …
10 mysql  innodb  deadlock 

4
显示表名+ mysql innodb数据库中每个表的记录数
如何列出当前数据库中的所有表以及表的行数。 换句话说,您能想到在mysql中提出类似查询的查询吗? +------------------------++------------------------+ | Tables_in_database | Number of rows | +------------------------++------------------------+ | database 1 | 1000 | | database 2 | 1500 | +------------------------++------------------------+ 欢迎使用不同的方法。
10 mysql  innodb  select  count 

3
从.ibd,.frm和mysqllogbin文件还原MySQL表
由于某种原因,当我尝试打开存储在其中的表.frm和.ibd文件(无论是在MySQL还是phpmyadmin上)时,它给了我一个语法错误,或者说它不存在。 我读过另一篇与此有类似问题的文章,但是我不知道如何检查是否innodb_file_per_table已启用,并且总体上我真的很困惑。我还将mysql-bin.000002文件的副本转换为txt文件,因此我发现数据库中的数据并未完全丢失。 该数据库是去年创建的。我有6个mysql-bin.00000文件,但由于某种原因,.000002它是最大的。现在,我拥有所有数据库的.ibd和.frm文件,但是对于如何将其还原回MySQL或至少还原为我可以读取的内容,我感到困惑。 我在Windows 2003 Server上使用WampServer 2.4和MySQL 5.6.12。另外,我应该在InnoDB中下载插件吗?

3
mysqldump --single-transaction,但是更新查询正在等待备份
如果我使用mysqldump --single-transaction,根据文档,它应该使用读锁刷新表以获取一致的状态,然后启动事务,并且没有编写者在等待。 但是,昨晚我遇到了以下情况: 摘录自show full processlist: 数百个... Command: Query Time: 291 State: Waiting for table flush Info: insert into db_external_notification..... 然后这个: Command: Query Time: 1204 State: Sending data Info: SELECT /*!40001 SQL_NO_CACHE */ * FROM `db_external_notification` 其余线程处于睡眠状态 有谁知道这些插入物还在等什么?我没有看到任何FLUSH表或DDL或手册中提到的任何可能导致查询等待的内容。 完整的mysqldump命令 mysqldump --quick --add-drop-table --single-transaction --master-data=2 -uxx -pxx dbname 我想--quick在这里是多余的,可能是以前的遗留物,这个脚本很旧,但也不会给您带来任何伤害

1
MySQL排序规则utf8_unicode的差异
但是我一直在阅读MySQL排序规则的重要性,到目前为止,我所学到的关于兼容性和准确性的知识似乎是这四个最好的选择。 utf8_unicode_ci utf8_unicode_520_ci utf8mb4_unicode_ci utf8mb4_unicode_520_ci 根据我的理解,uft8mb4对于具有多语言(字符)支持的字符(例如日语)会很有帮助。uf8仅支持3个字节,而uf8mb4支持4个字节。因此,听起来似乎显而易见的选择是uf8mb4,但要注意的是您有长度限制(该死!我也想吃我的蛋糕),这有点担心(我认为)。 然后考虑520标准。从我几乎找不到的东西中可以找到更多。但这当然是问题,我对此几乎找不到。只有那个人说这是一种进步,但是对此却非常含糊。 我确实希望能以尽可能少的限制获得最大的收获。。。我想这里的人可能知道一两件事。官方的MySQL网站没有我希望的那样丰富。 在这四个中,哪个将提供最大的兼容性,准确性和最大的存储长度?502标准之间真正的最大区别是什么?
10 mysql 

1
如何以线程安全的方式查询和增加值(计数器)?(避免比赛条件)
在每行有一个计数器(只是一个整数值)的表,我需要的电流值,并增加它在同一时间。 实际上,我想这样做: SELECT counter FROM table WHERE id=123 UPDATE table SET counter=counter+1 WHERE id=123 但是,作为两个查询执行此操作显然不是线程安全的:执行相同操作(在同一行上)的多个进程可能会获得相同的计数器值。我需要它们全部都是唯一的,因此每个过程都将获得实际的当前值并将其增加一个。 我可以想到一种在每行实现一个手动锁的构造,但是我想知道是否有更简单的方法可以做到这一点?
10 mysql  locking 

5
如何确定最佳sort_buffer_size?
我从一个示例配置文件中读取内容,该文件显示以下内容: # Sort buffer is used to perform sorts for some ORDER BY and GROUP BY # queries. If sorted data does not fit into the sort buffer, a disk # based merge sort is used instead - See the "Sort_merge_passes" # status variable. Allocated per thread if sort is …

1
MySql Server性能下降-什么以及如何检查?
开始:免责声明 我不是MySql Server DBA;我最了解MSSQL-这就是为什么我需要您的帮助。 结束:免责声明 我被要求检查为什么MySql服务器引擎的性能不佳-我没有看到也没有保存所涉及的数据库,并且想知道从哪里开始。 我从哪里开始? 我应该问哪些问题来访问MySql的人员-我什至不知道他们是否使用phpmyadmin或其他工具。 实质上: 我需要什么物品,我将如何回应每件物品? 问题出在数据库性能上时,有哪些关键要求? 在MSSQL中,我可以检查sp_who2现有连接以查看是否有阻塞,mysql中的对应对象是什么?*不必太具体,因为每个项目可能有多种结果,但是由于它影响用户,因此希望帮助解决问题-显然他们在没有dba的情况下设置了mysql引擎。

2
在mysql中启用LOAD DATA LOCAL INFILE
LOAD DATA LOCAL INFILE默认情况下未启用。通常,应通过放置local-infile=1在中来启用它my.cnf。但这并不适用于所有安装。以我的经验,尽管这两个安装都来自相同的预编译deb软件包,但它仅适用于Debian 7 minimal。两者都在OpenVZ VPS上。 如何调试为什么local-infile=1对安装无效,以及如何安全激活LOAD DATA LOCAL INFILE?

3
大批量插入速度
在我的应用程序中,我的INSERT似乎花费了大量时间。我有大量的对象(〜40-50,000)要插入表中。 让我们拿一个样品表 CREATE TABLE bill ( id BIGINT(20) PRIMARY KEY, amount INT(11) DEFAULT 0, bill_date DATETIME DEFAULT NOW(), INDEX (bill_date) ) ENGINE=InnoDB 以3行作为我的批处理大小,以下是我可以想到的插入方法 方法1-构造并击发3个原始插件 INSERT INTO bill (amount, bill_date) VALUES (10, '2012-01-01 00:00:00'); INSERT INTO bill (amount, bill_date) VALUES (20, '2012-01-02 00:00:00'); INSERT INTO bill (amount, bill_date) VALUES (40, '2013-02-05 …
10 mysql  innodb  insert  java  jdbc 

1
在MySQL中批处理UPDATE查询的最有效方法是什么?
我正在编写一个应用程序,该应用程序需要长时间刷新数据库的大量更新,而我一直沉迷于如何优化查询。目前,我正在使用INSERT INTO ... VALUES (..), (..) ON DUPLICATE KEY UPDATE,它可以将所有值批处理到一个查询中,但是在大型表上执行速度非常慢。我实际上从来不需要插入行。 我见过的其他方法是使用更新SET value = CASE WHEN...(由于我构建查询的方式而很难生成,并且我不确定CASE数百/数千个键的性能),并且只是多个连接更新。这些方法都比我目前的方法快吗? 据我所知,在MySQL中没有一种惯用的,有效的方法可以使我感到困惑。如果确实没有比更快的方法ON DUPLICATE KEY,是否值得切换到PostgreSQL并使用其UPDATE FROM语法? 任何其他建议也将不胜感激! 编辑:这是经常更新的表之一。由于它们不相关,因此我删除了列名。 CREATE TABLE IF NOT EXISTS `table` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `a` bigint(20) unsigned NOT NULL DEFAULT '0', `b` bigint(20) unsigned NOT NULL DEFAULT '0', `c` enum('0','1','2') …
10 mysql  update 

6
无法使用Workbench通过SSH连接到MySQL数据库
我正在尝试使用MySQL Workbench从我们的一台Web应用程序服务器通过SSH隧道连接到我的数据库。这是基本配置;请注意,出于安全原因,我更改了屏幕快照中的一些值。 问题是每次我尝试从我们的一台应用程序服务器通过SSH隧道连接时,都会出现以下错误: 无法使用用户social_shop_prod通过computer.amazonaws.com上的SSH隧道连接到us-east-1.amazonaws.com。无法连接到127.0.0.1上的MySQL服务器。 但是,如果我通过以下命令行通过SSH使用相同的凭据: mysql -u social_shop_prod -h us-east-1.amazonaws.com -p 我可以成功连接并获得MySQL交互式命令提示符。 在这里与我的开发团队的其他成员交谈时,我们谁也无法弄清楚为什么我无法使用Workbench从我们的应用程序服务器通过SSH进行隧道传输;但是当我SSH到我们的一台应用程序服务器并通过命令行连接到MySQL时;我可以成功连接。 为什么要尝试连接127.0.0.1以上?我没有在配置中指定;我的主机文件也没有将下面显示的域重定向到该IP。 非常感谢任何建设性的投入。


1
MySQL Dump Restore-如何保留注释
因此,我将复杂的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.