Questions tagged «mysql»

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

2
产品属性列表设计模式
我正在更新我们网站的产品数据库。它内置于MySQL中,但这更多是一个通用的数据库设计模式问题。 我打算切换到Supertype / Subtype模式。我们当前/以前的数据库主要是一个表,其中包含有关一种产品类型的数据。我们正在考虑将我们的产品范围扩展到包括不同的产品。 这个新的草稿设计是这样的: Product product_[type] product_attribute_[name] ---------------- ---------------- ---------------------------- part_number (PK) part_number (FK) attributeId (PK) UPC specific_attr1 (FK) attribute_name price specific_attr2 (FK) ... ... 我对产品属性表有疑问。这里的想法是产品可以具有给定属性的列表,例如颜色:红色,绿色,蓝色或材料:塑料,木材,铬,铝等。 该列表将存储在表中,并且该属性项的主键(PK)将在特定产品表中用作外键(FK)。 (Martin Fowler的书《企业应用程序体系结构的模式》称为“ 外键映射 ”) 这允许网站界面提取给定属性类型的属性列表,并将其吐入下拉选择菜单或其他UI元素中。该列表可以视为属性值的“授权”列表。 对我而言,拉出特定产品时最终发生的连接数量过多。您必须将每个产品属性表都连接到产品,以便获得该属性的字段。通常,该字段的名称可能仅仅是字符串(varchar)。 这种设计模式最终会创建大量表,并且最终会为每个属性提供一个表。解决此问题的一种方法是为所有产品属性创建更多的“抓包”表。像这样: product_attribute ---------------- attributeId (PK) name field_name 这样,您的表可能如下所示: 1 red color 2 blue color 3 chrome …

4
什么更好/更快?MySQL或文件系统?
假设一个网站是一个人的目录。对于每个人,可能会有个人资料照片和传记。 我承认我的SQL查询可能会更好,但总的来说会更快并且使用更少的处理能力。 要检查文件是否存在,然后将其打开或 检查MySql以查看生物是否存在并显示它。 我很确定在上述情况下,文件系统会占用mysql数据库。 如果我使数据库成为只读的分隔txt文件怎么办? 在这种情况下,什么更快? 如果txt文件中有太多记录,是否有某个特定点,最好使用MySql?

3
数据库大小如何影响性能:理论与现实
有很多说法说数据库大小不会在很大程度上影响性能。只要表上的索引适合内存,数据库就应该保持性能。 但是现实是什么?如果数据库体系结构不是最好的,则索引将无法容纳在内存中,并且可能存在大量冗余数据,是否只需删除冗余数据即可获得显着收益?我估计可以删除数据库中60-80%的数据。 我相信,减小数据库大小并增加RAM以使索引可以容纳在内存中将显着提高性能,这将为重新构建系统提供几个月的喘息空间。 是否还有其他因素(例如IO,碎片,工作数据集等)会影响基于数据库大小的性能?

1
是什么导致TRUNCATE TABLE花费很长时间?
我正在运行具有主/从复制(1个主,2个从)的MySQL5.5。 我有一个每周运行一次并截断特定表的过程。该表不是很大,只有几千条记录。 出于某种原因,该TRUNCATE TABLE命令的执行时间非常长(在主机和从机上)。执行大约需要40万毫秒!当它在从属服务器上运行时,它将导致它滞后于主服务器。在后TRUNCATE TABLE结束,一切恢复正常。 我知道一个从站在执行时没有收到任何读取,TRUNCATE TABLE因为它是一个专用的从站,并且从该从站读取的进程已关闭。同样,在该从站上,执行所花费的时间相同。 表格结构如下:http : //pastebin.com/qEQB4juR 关于如何加快TRUNCATE TABLE的任何想法?


2
如何通过表字段的组合使用唯一键?
看看下面的sqlfiddle:http ://sqlfiddle.com/#!2/dacb5/1 CREATE TABLE contacts ( id int auto_increment primary key, name varchar(20), network_id int, network_contact_id int ); INSERT INTO contacts (name, network_id, network_contact_id) VALUES ('John', 4, 10), ('Alex', 4, 11), ('Bob', 4, 12), ('Jeff', 4, 45), ('Bill', 7, 11), ('Walter', 7, 45), ('Jessie', 7, 360) ; 我有一个基本的联系表。该network_id和network_contact_id字段包含链接到其他表的ID号码。 我希望能够运行INSERT IGNORE查询,此表,但我想用的组合network_id,并network_contact_id作为唯一键来匹配。 …

2
加载从mysqldump创建的数据时,如何显示警告?
我有一个很大的.sql文件,其中有大量插入...值...语句。这些语句中的许多语句在执行期间都会生成警告。如何获得mysql打印警告? 如果命中了control-C,则导入将停止,然后将我放回OS命令行。 这是运行SQL的示例输出: Query OK, 9827 rows affected, 5403 warnings (0.20 sec) Records: 9827 Duplicates: 0 Warnings: 5403 Query OK, 9859 rows affected, 5247 warnings (0.20 sec) Records: 9859 Duplicates: 0 Warnings: 5247


4
母版上的吨数吨中继日志
到目前为止,我有一个拥有298个中继bin文件的主文件,可以追溯到298天。 .cnf中没有中继日志定义 和 mysql> show variables like '%relay%'; +---------------------------------+----------------+ | Variable_name | Value | +---------------------------------+----------------+ | innodb_overwrite_relay_log_info | OFF | | max_relay_log_size | 0 | | relay_log | | | relay_log_index | | | relay_log_info_file | relay-log.info | | relay_log_purge | ON | | relay_log_space_limit | 0 | +---------------------------------+----------------+ 重置从站将其清除,但随后它们才开始重新生成。 …

2
如何阻止MySQL从站将更改复制到“ mysql”数据库?
我将我的从属设备设置为不复制“ mysql”数据库,如本说明中所述 SHOW SLAVE STATUS\G; Slave_IO_State: Waiting for master to send event Master_Host: 127.0.0.1 Master_User: replication Master_Port: 3306 Connect_Retry: 60 Master_Log_File: master-bin.000001 Read_Master_Log_Pos: 1660 Relay_Log_File: mysql-relay-bin.000004 Relay_Log_Pos: 478 Relay_Master_Log_File: master-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: **Replicate_Ignore_DB: mysql** Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 1660 Relay_Log_Space: 633 …

2
插入时MySql Gap Lock死锁
当从多个源频繁插入到表中时,我从间隙锁获取死锁。这是我的过程的概述。 START TRANSACTION UPDATE vehicle_image SET active = 0 WHERE vehicleID = SOMEID AND active = 1 Loop: INSERT INTO vehicle_image (vehicleID, vehicleImageFilePath, vehicleImageSplashFilePath ,vehicleImageThumbnailFilePath, vehicleImageMiniFilePath, mainVehicleImage, active) VALUES (%s, %s, %s, %s, %s, %s, 1); END TRANSACTION 的输出SHOW Create table vehicle_image;是: CREATE TABLE `vehicle_image` ( `vehicleImageID` int(11) NOT NULL …

2
为单个数据库启用查询日志
我在mysql 5.6服务器中有许多数据库架构,现在这里的问题是我只想捕获对一个架构的查询。 我无法为整个服务器启用查询日志,因为我的架构之一负载很高,它将影响服务器。 无论采用哪种方式,任何工具,我都只能通过单个模式记录查询。 我发现了基准测试图,该图显示了启用查询日志后每秒对事务的影响。

2
如何正确地从单个用户中删除“ REQUIRE SSL”?
通过执行以下操作,我成功地将REQUIRE SSL授予了单个用户: mysql -u"${targetMySqlUser}" -p"${targetMySqlPass}" -e "GRANT USAGE ON dbname.* TO 'dbusername'@'%' REQUIRE SSL;" 但无法使用撤消功能从用户删除或撤消此标志。我想即时通讯与语法。是否有使用“ revoke”命令将其删除而又不撤消整个权限的正确方法? MySQL 5.5手册,该站点和互连网并没有帮助我找到适当的对策。 该SQL语句将起作用。 UPDATE mysql.user SET ssl_type = '' WHERE ssl_type = 'any' ; FLUSH PRIVILEGES; 但是我相信GRANT REQUIRE SSL我必须在哪里REVOKE REQUIRE SSL,不是吗?

3
在InnoDB表中,将主键作为复合二级索引的最后一列有什么作用?
假设我有一对一的关系(person_id, pet_id)。我有一个表在哪里pet_id是主键。 我了解InnoDB二级索引实际上是一个B树,其中的值是该行的相应主键值。 现在,假设一个人可以养成千上万只宠物,而我经常想要一个人的宠物按顺序排列pet_id。那么,如果在第二个索引记录的排序会的问题(person_id, pet_id)或只是person_id用pet_id的该person_id是无序。猜后来。 因此,如果person_id是非唯一的,记录是按(person_id, pet_id)还是JUST 物理排序的pet_id? 谢谢

2
如何将多行数据转换为具有多列的行
我有一个这样的MySQL表: User_Id course_name course_location course_id 1 course name 1 location 1 1 1 course name 2 location 2 2 1 course name 3 location 1 3 2 course name 2 location 1 2 2 course name 4 location 4 4 我怎样才能得到这样的结果数据: User_id course 1 course2 course3 course4 1 yes-location1 yes-location2 …
8 mysql  pivot 

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.