Questions tagged «mysql»

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

1
有没有人推荐一本教授分片的书?
有没有人对这本讲授数据库分片的书有很好的推荐(最好从零开始) 我读过40多个有关分片的网站。 我并不是说在线站点/博客很糟糕,它们是不错的选择。但是,我需要的主要餐点不仅仅是这里和那里的有用信息。基本上,我对如何实现分片有一个想法(但是我想),但是由于这是一个非常复杂的概念,因此我相信还有很多很多可以研究。
16 mysql  sql-server 

2
偶尔查询缓慢的原因?
我们在Windows Server 2008 R2上运行MySQL 5.1。 我们最近在数据库上进行了一些诊断,发现了一些无法解释的令人不安的工件。当查询花费很长时间(> 2000ms)时,我们添加了一些代码来记录日志。结果令人惊讶(并且可能解释了我们的僵局)。 有时,查询通常花费很少的时间(<10毫秒),而这需要4到13秒。需要明确的是,这些查询持续不断地运行(每秒几次),并且不受这些查询时间尖峰的影响。 我们已经通过索引查找任何明显的错误,并且运气不高。 更新资料 人员表: | people | CREATE TABLE `people` ( `people_id` bigint(20) NOT NULL AUTO_INCREMENT, `company_id` bigint(20) NOT NULL, `name` varchar(255) DEFAULT NULL, `password` varchar(255) DEFAULT NULL, `temp_password` varchar(10) DEFAULT NULL, `reset_password_hash` varchar(255) DEFAULT NULL, `email` varchar(255) DEFAULT NULL, `phone` varchar(32) DEFAULT …

2
无法破译innodb状态日志中的死锁
我们正在从Microsoft ADO.NET连接器访问MySQL。 有时,我们在innodb状态中看到以下死锁,并且无法确定问题的原因。看起来事务(2)正在等待并持有相同的锁? ------------------------ LATEST DETECTED DEADLOCK ------------------------ 110606 5:35:09 *** (1) TRANSACTION: TRANSACTION 0 45321452, ACTIVE 0 sec, OS thread id 3804 starting index read mysql tables in use 1, locked 1 LOCK WAIT 2 lock struct(s), heap size 368, 1 row lock(s) MySQL thread id 84, query id …

3
如何在MySQL存储过程中使用准备好的语句?
我正在使用mysql,我需要以某种方式在以后的查询中使用由prepared语句返回的curid列。我使用准备好的语句,因为如我所读,这是将变量传递给LIMIT子句的唯一方法。我在这里有此存储过程: DROP PROCEDURE IF EXISTS fixbalance; CREATE PROCEDURE fixbalance (userid INT) BEGIN DECLARE i INT DEFAULT 0; DECLARE balance INT DEFAULT 0; DECLARE idcnt INT; SET idcnt = (SELECT COALESCE(COUNT(id), 0) FROM coupon_operations WHERE user_id = userid); IF idcnt <> 0 THEN WHILE i <= idcnt DO BEGIN SET @iter …

3
MySQL子查询问题
为什么查询 DELETE FROM test WHERE id = ( SELECT id FROM (SELECT * FROM test) temp ORDER BY RAND() LIMIT 1 ); 有时删除1行,有时2行,有时什么都不删除? 如果我以这种形式写: SET @var = ( SELECT id FROM (SELECT * FROM test) temp ORDER BY RAND() LIMIT 1 ); DELETE FROM test WHERE id=@var; 然后正常工作-子查询是否有问题?
16 mysql 

3
为什么导入12 GB的.sql文件需要超过36个小时?
我一直在等待36个小时,以便使用一个简单的type site.sql | mysql命令导入12 GB的.sql文件。我可以看到ibdata1仍然在增长,目前将近40 GB。 考虑到触发器和存储过程位于.sql的末尾,我只认为MySQL应该添加数据和关键索引。 site.sql是使用此命令从另一台服务器生成的: mysqldump -R -e --databases site --add-drop-database --add-create-database --add-drop-table -C --single-transaction --triggers 什么要花这么长时间?
16 mysql  mysql-5  mariadb 

5
当禁用查询缓存时,为什么MySQL线程经常显示“正在释放项目”状态?
当我运行时SHOW PROCESSLIST,通常在“正在释放项目”状态下有大量的INSERT / UPDATE线程。 MySQL手册建议线程处于这种状态的原因至少有一部分涉及查询缓存-大概由于数据更改,它会使缓存的查询无效。 但是,将my query_cache_size设置为0会完全禁用查询缓存。 在这种状态下会有这么多线程还有什么其他原因? 相关表使用InnoDB存储引擎。
16 mysql  innodb 

1
MySQL中是否有“创建或替换过程”的替代方法?
MySQL是否有版本的“创建或替换过程”?我似乎无法执行此操作,或者在重新编译之前编写该过程的删除脚本(如果存在),而不会得到存储过程存在的错误消息。 DELIMITER $$ -- would love to be able to drop procedure if exists db.sp_tmp_90days; -- or use "create or replace" create procedure db.sp_tmp_90days() BEGIN drop table db.tmp_90days; create table db.tmp_90days ( user_name varchar(128), first_name varchar(50), last_name varchar(50), system varchar(10), last_login datetime ); alter table db.tmp_90days add index idx_user_name(user_name); alter …


3
使用BOOLEAN而不是TINYINT(1)有什么好处?
从MySQL手册中说: 布尔,布尔 这些类型是TINYINT(1)的同义词。零值被认为是错误的。非零值被视为true: 我创建了一个BOOLEAN列,0并将其作为默认值。然后将值更新为2。从逻辑上讲,我希望MySQL接受一个0或1一个布尔值。但是,MySQL不会发出错误或阻止我执行更新。 如果BOOLEAN的工作方式与TINYINT(1)完全相同,那么我使用TINYINT(1)还是BOOLEAN会有什么不同吗?
16 mysql  datatypes 

2
MySQL-使用count(*)和information_schema.tables进行行计数之间的区别
我想要一种快速的方法来计算表中有几百万行的行数。我在Stack Overflow上找到了“ MySQL:最快的行数计数方法 ”一文,它看起来可以解决我的问题。Bayuah提供了以下答案: SELECT table_rows "Rows Count" FROM information_schema.tables WHERE table_name="Table_Name" AND table_schema="Database_Name"; 我喜欢它,因为它看起来像查找而不是扫描,因此它应该很快,但是我决定对它进行测试 SELECT COUNT(*) FROM table 看看有多少性能差异。 不幸的是,我得到了如下所示的不同答案: 题 为什么答案相差约200万行?我猜执行全表扫描的查询是更准确的数字,但是有没有一种方法可以不必运行此慢查询就可以获取正确的数字? 我跑了ANALYZE TABLE data_302,完成了0.05秒。当我再次运行查询时,我现在得到了34384599行的更接近的结果,但是它仍然select count(*)与34906061行的数字不同。分析表是否立即返回并在后台处理?我觉得值得一提的是,这是一个测试数据库,目前尚未写入。 没有人会在乎是否只是告诉某人一个表有多大的情况,但是我想将行数传递给一些代码,该代码将使用该数字来创建一个“大小相等”的异步查询来查询数据库并行地,类似于Alexander Rubin通过并行查询执行来提高慢查询性能中所示的方法。照原样,我将获得最高的ID,SELECT id from table_name order by id DESC limit 1并希望我的表不要过于分散。
16 mysql  mysql-5.6  count 

2
设计数据库和表以保留更改记录的最佳方法?
我需要在项目上设置历史记录功能,以跟踪先前的更改。 假设我现在有两个表: NOTES TABLE (id, userid, submissionid, message) SUBMISSIONS TABLE (id, name, userid, filepath) 示例:我在注释中有一行,并且用户想要更改消息。我想跟踪更改之前和更改之后的状态。 在这些表中的每个表上设置一列的最佳方法是什么,该列将说明某项是否“旧”。0,如果活性OR 1,如果删除/不可见。 我还想创建一个历史记录(AUDIT TRAIL)表,其中包含id先前状态的,id新状态的,这些ID与哪个表有关?

2
备份/还原用户/密码/特权
我正在从一台服务器移动到另一台服务器,并且想从我的MySQL Server备份所有数据库+用户/特权/密码。我发现使用来备份数据库mysqldump,但是我不知道如何备份所有用户和给定的特权。有没有办法实现这一目标,还是必须在新服务器上重新进行设置?

2
加入查询需要11分钟才能在300,000行表上运行
下面的查询需要花费超过11分钟的时间来执行。 SELECT `c`.*, `e`.`name` AS `employee_name`, `e`.`emp_no`, `d`.`code` AS `department_code`, IF(ew.code IS NOT NULL, ew.code, egw.code) AS shift_code, IF(ew.code IS NOT NULL, ew.time_in_from, egw.time_in_from) AS time_in_from, IF(ew.code IS NOT NULL, ew.time_out_to, egw.time_out_to) AS time_out_to, IF(ew.code IS NOT NULL, ew.next_day, egw.next_day) AS next_day FROM `tms_emp_badge_card` AS `c` LEFT JOIN `tms_door_record_raw` AS …


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.