Questions tagged «mysql»

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

2
我应该使用UUID还是ID
我已经在系统中使用UUID一段时间了,原因有很多,从日志记录到延迟的关联。随着我变得越来越幼稚,我使用的格式发生了变化: VARCHAR(255) VARCHAR(36) CHAR(36) BINARY(16) 当我到达最后一个时BINARY(16),我开始将性能与基本自动递增整数进行比较。测试和结果如下所示,但如果你只是想总结,表示INT AUTOINCREMENT和BINARY(16) RANDOM对数据相同的性能范围高达20万(该数据库已预先填充之前测试)。 最初,我对将UUID用作主键持怀疑态度,确实确实如此,但是我发现这里有潜力创建一个可以同时使用两者的灵活数据库。尽管许多人强调这两种方法的优点,但同时使用这两种数据类型可以消除哪些缺点呢? PRIMARY INT UNIQUE BINARY(16) 这种类型的设置的用例将是表间关系的传统主键,并且具有用于系统间关系的唯一标识符。 我本质上试图发现的是两种方法之间的效率差异。除了所使用的四倍磁盘空间(在添加其他数据后可能几乎可以忽略不计)外,在我看来它们是相同的。 架构: -- phpMyAdmin SQL Dump -- version 4.0.10deb1 -- http://www.phpmyadmin.net -- -- Host: localhost -- Generation Time: Sep 22, 2015 at 10:54 AM -- Server version: 5.5.44-0ubuntu0.14.04.1 -- PHP Version: 5.5.29-1+deb.sury.org~trusty+3 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; …

8
如何使MySQL客户端从mylogin.cnf读取密码?
我正在尝试使mysql客户端连接到mysql服务器,而不要求以交互方式提供密码。采取的步骤: 1)首先创建一个mylogin.cnf文件 $ mysql_config_editor set --user=<user> --password --host=<host> Enter password: 2)文件创建成功: $ ls -la .mylogin.cnf -rw-------. 1 urmt urmt 136 Dec 19 11:01 .mylogin.cnf $ mysql_config_editor print --all [client] user = <user> password = ***** host = <host> 3)使用mysql客户端连接 $ mysql <dbname> ERROR 1045 (28000): Access denied for user '<user>'@'<host>' …

3
错误-函数'innodb'已经存在
我正在寻找开始将一些MyISAM表转换为INNODB。在4核/ 8线程cpu上运行带有MySQL 5.6(apt-get从5.5升级),32G ram的Ubuntu 14.04 Server。最初遇到麻烦... could not open single-table tablespace file .\mysql\innodb_index_stats.ibd after restart of MySQL 和 Error: Table "mysql"."innodb_table_stats" not found. 我遵循了Rolando的建议,数据库不再崩溃或创建巨大的error.log。 (以上问题已不存在,仅描述了主要事件) 现在,在将任何内容转换为INNODB之前,我担心以下错误。从我阅读的内容中可以忽略联合,下面的第二行(也是本文的主题)与我有关 2014-05-19 01:50:57 30950 [Note] Plugin 'FEDERATED' is disabled. 2014-05-19 01:50:57 30950 [ERROR] Function 'innodb' already exists 2014-05-19 01:50:57 30950 [Warning] Couldn't load plugin named …
11 mysql  innodb 

2
如何删除空表
是否可以从庞大的数据库(mysql)中删除所有空表? 我正在寻找一个sql命令来自动删除所有这些空表。 当前,我的数据集中有305个表,其中约30%是旧的空表,这些表将不会在新应用程序中使用。 只是为了澄清;所有表的类型为= MyISAM
11 mysql  myisam 

2
如何在MySQL中为具有NULL值的列设计索引?
我有一个拥有4000万个条目的数据库,并希望使用以下WHERE子句运行查询 ... WHERE `POP1` IS NOT NULL && `VT`='ABC' && (`SOURCE`='HOME') && (`alt` RLIKE '^[AaCcGgTt]$') && (`ref` RLIKE '^[AaCcGgTt]$') && (`AA` RLIKE '^[AaCcGgTt]$') && (`ref` = `AA` || `alt` = `AA`) LIMIT 10 ; POP1是一个浮点列,也可以为NULL。POP1 IS NOT NULL应该排除大约50%的条目,这就是为什么我将其放在开头。所有其他术语仅会稍微减少该数字。 除其他外,我设计了一个index pop1_vt_source,它似乎没有使用,而使用了索引vt为第一列的索引。解释输出: | id | select_type | table | type | possible_keys …
11 mysql  index 



2
如何在MySQL中对外键使用RESTRICT?
在数据库结构中 CREATE TABLE Country ( name varchar(40) NOT NULL, PRIMARY KEY (name) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE City ( name varchar(40) NOT NULL, PRIMARY KEY (name) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE Map ( country varchar(40) NOT NULL, city varchar(100) NOT NULL, PRIMARY KEY (country,city), FOREIGN KEY (country) REFERENCES …

1
重新启动MySQL复制从站
自设置以来,我第一次需要重新启动只读的MySQL复制从站。 我发现了这篇关于关闭从属服务器进行维护的文章(尽管他只是在描述停止mysql守护程序): 如何安全地重启您的MySQL从服务器 概括而言,该过程是: 在mysql客户中: STOP SLAVE; FLUSH TABLES; 从操作系统: /etc/init.d/mysql stop 我会在这时重启,然后在系统启动后: 在mysql客户端中(mysql守护程序配置为在启动时启动): START SLAVE; 这看起来正确吗?我还有什么需要做的吗?

2
MySQL中触发器与存储过程的性能
关于DBA.StackExchange(触发器在记录上保留修订号的最佳实践是什么?)的一篇文章引发了一个关于MySQL性能的有趣的问题(至少对我来说很有趣)。 上下文是我们要在表中为每个更新的行插入一条记录。在更新该行之前,我们要存储一个先前的值,然后递增其中一列(“版本”列)。 如果我们在触发器中执行此操作,则效果很好。对于MySQL,触发器是逐行的,因此这是一个简单的解决方案。选择表中当前的数据,将其插入日志记录表,然后更新新数据中的“版本”列。 但是,可以将此逻辑移至存储过程。如果这样做,您将执行插入操作,然后增加表中的“版本”列。整个事情将基于设置。 因此,在执行此插入操作时,使用基于集合的存储过程方法或基于触发器的方法会更有效吗? 这个问题是针对MySQL的(因为它具有逐行触发器),尽管它可以应用于其他逐行触发器DBMS。

3
具有多个变体/属性的产品的架构设计?
我正在使用MySQL。这个想法类似于具有不同概念的shopify,因此用户将添加具有多种变体和属性类型的自己的产品。 从我所做的所有研究来看,这似乎是我最可能的解决方案,我只是想知道以下方案是否存在问题,还有哪些优点/缺点? 谢谢 Table: products ------------------------------ | ID | ProductName | |----------------------------| | 1 | Leather Wallet Case | | 2 | Jeans | | 3 | Power Bank | Table: products_variants ------------------------------- | ID | ProductId | ParentId | Variant | VariantName | SKU | StockTotal | WholeSalePrice | …

3
实现基于并发表的队列的最佳方法
我在MySQL中有一张表,代表要处理的链接队列。链接由外部应用程序一个接一个地处理,最后被删除。这是一个高容量队列,我有多个处理应用程序实例,分布在多个服务器上。 如何确保每个记录仅由一个应用程序选择?有没有办法标记/锁定记录? 现在,为了避免两个或多个拾取同一链接,我允许每个实例仅拾取一组特定的记录(基于其ID的MOD),但这不是增加队列处理的透明方法通过添加新实例来提高速度。
11 mysql  queue 

1
MySQL的行大小错误
我在Macbook上运行MySQL服务器(用于测试)。版本是Homebrew的5.6.20。我开始遇到“行大小太大”错误,并且能够将其减少到此测试用例。表: mysql> describe test; +-------+----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | stuff | longtext | YES | | NULL | | +-------+----------+------+-----+---------+----------------+ 表格状态: mysql> show table status where …
11 mysql  innodb 

5
无法创建表,但表不存在
我正在使用这些步骤来创建一个表my_user,该表已经存在,但以某种方式从我的数据库中消失了my_db: mysql> USE my_db; mysql> DROP TABLE my_user; mysql> ERROR 1051 (42S02): Unknown table 'my_user' mysql> CREATE TABLE my_user (id INT AUTO_INCREMENT NOT NULL, username VARCHAR(255), group_id VARCHAR(255) DEFAULT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB; mysql> ERROR 1005 (HY000): Can't create table 'my_db.my_user' (errno: …
11 mysql  innodb 

3
使用LIMIT是否可以提高性能,并且引人注意?
我想了解以下内容。 假设我有一个复杂的查询,假设一个5个表的联接按求和和排序。 抛开对查询本身的任何优化(例如索引等)。使用 是否有任何明显的性能优势LIMIT?我认为必须在应用LIMIT 之前处理所有查询(和结果),因此使用LIMIT检索结果的子集,这是否会带来重大/显着的改进?

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.