Questions tagged «mysql»

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

2
MySQL为什么要进行串行同步I / O?
当在MyISAM表上查看一个特别烦人的查询时,在许多情况下要花很长时间才能执行,我注意到MySQL似乎暴露出一种相当奇怪的I / O模式:执行单个查询时,必须要做很多事情I / O量(例如,对于表扫描或由于高速缓存而导致缓存为空,echo 3 > /proc/sys/vm/drop_caches因此需要首先从磁盘加载索引)时,基础块设备的队列大小接近于值1,而性能则极差仅4-5 MB / s: root@mysql-test:~# iostat -xdm 5 /dev/sda Linux 3.2.0-40-generic (mysql-test) 04/30/2014 _x86_64_ (4 CPU) Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0.14 24.82 18.26 88.79 0.75 4.61 102.56 2.83 26.39 19.29 27.85 2.46 …

2
MySQL不释放内存
在对它执行任何大的插入或选择语句之后,MySQL似乎想将整个表保留在缓存中(表大小=〜20GB)。现在我的innodb缓冲池是20GB。总内存为32GB。我将提供一些内存使用情况以及innodb状态的输出以及mysqltuner的输出。过去几天一直让我发疯。请帮忙!感谢您提供任何反馈意见,如果您需要更多信息,请告诉我。 同样,执行“刷新表”只会关闭并在内存中重新打开它们。至少我认为这是正在发生的事情。这是我执行一堆插入操作之前innodb当前的内存状态: ---------------------- BUFFER POOL AND MEMORY ---------------------- Total memory allocated 21978152960; in additional pool allocated 0 Dictionary memory allocated 6006471 Buffer pool size 1310719 Free buffers 347984 Database pages 936740 Old database pages 345808 Modified db pages 0 Pending reads 0 Pending writes: LRU 0, flush list 0, single …
8 mysql  innodb  memory 


1
将XML转换为MySQL表
我有一个采用以下格式的大XML文件,我需要将此文件转换为MySQL表。请让我知道我该怎么做? ~~~~~~~~~~~ <host starttime="1392325468" endtime="1392325486"><status state="up" reason="user-set"/> <address addr="192.168.0.2" addrtype="ipv4"/> <hostnames> </hostnames> <ports><extraports state="filtered" count="2"> <extrareasons reason="no-responses" count="2"/> </extraports> <port protocol="udp" portid="22"><state state="open|filtered" reason="no-response" reason_ttl="0"/><service name="ssh" method="table" conf="3"/></port> <port protocol="udp" portid="123"><state state="open|filtered" reason="no-response" reason_ttl="0"/><service name="ntp" method="table" conf="3"/></port> </ports> </host> ~~~~~~~~~~~
8 mysql  xml 

1
MySQL错误:无法写入二进制日志
我有一个系统(从另一个开发公司继承),但是我还不知道其所有功能。构造: -网络客户端/应用程序(symfony 1.4) -数据库-MySQL。 项目部署在2台服务器上: 1台:nginx服务器+ PHP + DB Master; 第2名:DB从站。 当DB Master的Web客户端修改数据时,DB Slave可以正常工作,并且数据具有正常的复制过程。当MySQL Management Client修改数据时,我会收到一条通知: 无法执行语句:由于BINLOG_FORMAT = STATEMENT,并且至少一个表使用了仅限于基于行的日志记录的存储引擎,因此无法写入二进制日志。当事务隔离级别为READ COMMITTED或READ UNCOMMITTED时,InnoDB仅限于行记录 然后,DB Slave崩溃,复制过程中断(错误插入...重复条目...)。 当我尝试使用Java应用程序/模块(在事务内部运行)插入数据时,类似的通知也会以相同的文本发生(在这种情况下-错误),并且在异常之后,事务会回滚并且不会发生任何修改。 如何解决此问题并使系统正常工作,并使修改DB Master和DB Slaves上的数据以正常模式工作成为可能?
8 mysql  logs  errors 

2
为什么CAST(1 AS SIGNED INTEGER)在MySQL上返回BIGINT?
如果我这样做,CAST(1 AS SIGNED INTEGER)最终总是会得到BIGINT退货,例如: $ mysql -u root -p --column-type-info Enter password: --- Copyright and help message snipped for brevity --- mysql> select cast(1 as signed integer); Field 1: `cast(1 as signed integer)` Catalog: `def` Database: `` Table: `` Org_table: `` Type: LONGLONG <== LONGLONG i.e. 64 bit integer Collation: …

1
如何在MySQL中优化InnoDB表
我一直在研究如何仅在MySQL中优化碎片表,并回顾了有关优化表的文章。基本上,它针对任何表对information_schema数据库执行查询,data_free > 0并OPTIMIZE仅对那些表构建SQL语句。我运行了此查询,它确定了148个表以进行优化。标识的所有表都是InnoDB表。执行结果优化SQL脚本后,我重新运行原始脚本以识别碎片表,并在第一遍过程中返回完全相同的表。 我看到了有关InnoDB表和OPTIMIZE命令的冲突帖子。有人说这OPTIMIZE不适用于InnoDB表,需要运行ALTER TABLE table_name ENGINE=INNODB。其他人则说,针对InnoDB表执行时OPTIMIZE实际上会调用该ALTER TABLE命令。考虑到这一点,我ALTER TABLE对被标识为碎片(data_free > 0)的InnoDB表之一运行了该命令,发现其data_free之后没有改变。它仍然大于0。我还重新启动了MySQL,并检查了它以发现相同的结果。 现在,我们组织中有几台运行MySQL 5.5.29的服务器,我对所有服务器进行了查询,以识别出任何带有InnoDB表且未DATA_FREE=0 or NULL返回任何表。它们都大于零。 我还OPTIMIZE对一些大于零的MyISAM表运行了该命令,DATA_FREE然后验证它是否为零。 谁能为我阐明一下?从InnoDB表中删除碎片的正确方法是什么?确定零散的InnoDB表的正确方法是什么? 谢谢

3
根据最新日期选择具有多个联接的行
我有此查询(SQLFiddle): SELECT c.name, a.user_id, a.status_id, a.title, a.rtime, u.user_name, s.status_name FROM company c LEFT JOIN action a ON a.company_id=c.id LEFT JOIN user u ON u.id=a.user_id LEFT JOIN status s ON s.id=a.status_id WHERE u.user_name='Morgan' -- WHERE c.name='Fiddle' GROUP BY c.id HAVING a.rtime IS NULL OR a.rtime = ( SELECT max(rtime) FROM action …
8 mysql  group-by 

2
如何将Oracle数据库迁移到MySQL服务器?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 当前,我们的应用程序正在使用Oracle 11g数据库运行。我们正在开发在MySQL群集上运行的应用程序的更新版本。我们需要将数据从Oracle数据库迁移到MySQL数据库。这不是数据库对象的直接副本。在较新版本的应用程序中,架构(表结构和关系)已更改。而且审计表也需要复制。有什么方法可以映射旧Oracle模式和新MySQL模式中的表,列并应用复制,以便复制数据? 我们正在考虑分两个步骤进行此活动。1.将Oracle数据库转换为MySQL数据库。2.编写存储过程以逐表复制。 从一个RDBMS供应商到另一供应商执行这种数据库迁移时,是否有最佳实践?是否有任何开源或商业工具可用于此?

3
如何将MySQL链接服务器添加到SQL Server?
我正在尝试将SQL Server上的链接服务器添加到MySQL Server。 请注意,SQL Server安装在具有不同域名的单独计算机上。 SQL Server 10.0.1.1在old_domain.com上。 MySQL服务器10.0.1.2位于new_domain.com上。 我在服务器上添加了ODBC数据源,10.0.1.1并测试了连接,未报告任何问题。 然后,我打开Microsoft SQL Server Management Studio并导航到SQL SERVER > Server Object > Linked Servers。 我进入向导以添加链接服务器,并按如下方式进行配置: 链接服务器:“ MySQLNewServer” 我选择了“其他数据源”提供程序“用于ODBC的Microsoft OLE DB提供程序”产品名称“与MySQL的连接”数据源“ MySQL”与第一步中添加的数据源名称相同。 在“安全性”选项卡上,选择“使用此安全性上下文进行访问”,然后输入SQL Server用户名和SQL Server密码。 我打“确定” 注意:我遵循此链接上的说明http://dbperf.wordpress.com/2010/07/22/link-mysql-to-ms-sql-server2008/ 但是,我收到此错误: 链接服务器“ MySQLNewServer”的OLE DB Providor“ MSDASQL”返回消息“ [MySQL] [ODBC 5.2(w)驱动程序]无法连接到10.0.1.1(10055)上的MySQL服务器Microsoft SQL Server错误:7303。 有人可以告诉我我在做什么错吗?我怎样才能使这两个服务器进行通信?

2
MySQL-如果删除了最后一行,则自动递增不会自动递增
我有一个表,其中包含一个自动递增的主键ID。如果我删除最后一行(最高ID,例如id = 6)并插入新行,则新ID从7开始。我必须更改哪个参数,使主键从6开始? CREATE TABLE animals ( id MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, PRIMARY KEY (id) ) ENGINE=MyISAM; INSERT INTO animals (name) VALUES ('dog'),('cat'),('penguin'), ('lax'),('whale'),('ostrich'); 结果: id名称 1狗 2猫 3企鹅 4松懈 5鲸鱼 6鸵鸟 DELETE FROM animals WHERE id = 6; INSERT INTO animals (name) VALUES ('x'); 结果: …

1
MySQL在巨大的表和简单的SELECT上需要FORCE INDEX
我们有一个应用程序,它将来自不同来源的文章存储在MySQL表中,并允许用户检索按日期排序的那些文章。文章始终按来源进行过滤,因此对于客户端SELECT,我们始终有 WHERE source_id IN (...,...) ORDER BY date DESC/ASC 我们正在使用IN,因为用户有很多订阅(有些订阅有数千个)。 这是articles表的架构: CREATE TABLE `articles` ( `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, `source_id` INTEGER(11) UNSIGNED NOT NULL, `date` DOUBLE(16,6) NOT NULL, PRIMARY KEY (`id`), KEY `source_id_date` (`source_id`, `date`), KEY `date` (`date`) )ENGINE=InnoDB AUTO_INCREMENT=1 CHARACTER SET 'utf8' COLLATE 'utf8_general_ci' COMMENT=''; 我们需要(date)索引,因为有时我们在此表上运行后台操作,而没有按源进行过滤。但是,用户无法执行此操作。 该表有大约10亿条记录(是的,我们正在考虑分片以便将来...)。一个典型的查询如下所示: …

3
MySQL可能创建全局例程(存储过程和/或函数)
是否可以以某种方式定义全局可用的例程?似乎每个例程都必须在数据库范围内创建。 当我尝试从控制台创建例程(没有发出之前use dbname)时,出现错误: ERROR 1046 (3D000): No database selected 我们有大量相同的数据库(数据不同),目标是为某些表名创建一些触发器。但是我们只想运行一个例程,所以我们不必为每个数据库都创建这些例程(由于它们是相同的,因此例程对于每个数据库都将起作用)。

1
获取将多个表作为一行联接的结果
我有这两个表: table1: id | name --------- 1 | john 2 | jack table2: id | profile_id | institution ----------------------------- 1 | 1 | SFU 2 | 1 | UBC 3 | 2 | BU 4 | 2 | USC 5 | 2 | SFU 如果我想使用其用户ID获取有关用户的所有信息,则可以使用以下命令简单地加入他们: select a.id, a.name, b.institution from …
8 mysql 

1
是什么导致“等待表级锁定”错误?
我们已经使数据库挂起了两次,并试图找到原因。 show processlist Waiting for global read lock | INSERT INTO {myisam_table} ... 在这里,磁盘空间已满,因此我们认为问题已经解决了,但第二天中午又挂起了: show processlist Waiting for table level lock | UPDATE {myisam_table} ... 是什么原因造成的? Mysql默认引擎:InnoDB。 数据库混合了MyISAM和InnoDB引擎的表。 日志发布在这里: http://arturito.net/2013/08/28/mysql-waiting-for-table-level-lock-errors/

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.