我正在设计一个数据库,我正在重新考虑我最初的设计决定......
产品类型如下... 型号、零件、替换零件套件和选项。
选项 A(第一个设计):我计划为上述产品类型设置单独的表格。我想说每个表中大约 75% 的字段是相同的。
我将每个产品类型创建为单独的表,因为我需要在它们之间创建关联。例如,一个模型可以有很多选项,一个选项可以有很多模型。一个选项也可以有很多部分,一个部分可以有很多选项……等等……
选项 B:我可以创建一个名为 Product 的表格,而不是单独的表格,其中包含模型、零件、替换零件套件和选项。我可以有一个称为 type 的字段来区分模型、选项等。我认为不利的一面是某些产品类型永远不会使用几个字段(留空)。我猜这就是“非最佳实践”发挥作用的地方。
选项 B 将大大降低数据库设计的复杂性。在提取数据进行查询时,我也不必担心引用一堆表......
我有一个经常运行的导入过程,我希望它是一种“全有或全无”的交易,也就是:交易。
有很多方面,导入可能会产生 100k-1mil+ 记录之间的任何地方。这相当于有效载荷范围从几 MB 到几百 MB 的数据。
我知道临时表是另一种选择 - 但这种方法似乎很方便。
对于这种在提交之间进行大量数据操作的实践,是否有任何需要注意的警告?(在提交后的典型写入/索引负载突发之外)
InnoDB 将所有表存储在一个大文件中ibdata1。
删除大表后,无论表有多大,文件都会保持其大小。如何缩小该文件而不必转储并重新导入整个数据库(总共有数百 GB)?
我认为原因是因为您仍然可以回滚下降。就我而言,我不需要。
我知道在 MySQL 的命令行中,我可以使用以下命令将表的自动增量字段重置为 1:
ALTER TABLE tablename AUTO_INCREMENT = 1
Run Code Online (Sandbox Code Playgroud)
我很好奇是否有办法从 phpMyAdmin 中做到这一点。像一个复选框来重置自动增量或其他类似的东西?
并不是说命令行方法有什么问题。更多我一直在思考的那些好奇的事情......提前致谢!
如何在 PostgreSQL 中将字符串转换为双精度?
我试过类似的东西:
update points set latitude2 = cast(latitude as double) ;
Run Code Online (Sandbox Code Playgroud)
其中纬度是一个字符串,纬度2是一个双精度值。我只是无法让它工作。
我们需要做一个恢复,不能因为其他用户连接。我们以为我们已经断开了每个进程,但显然没有。
我们如何从 Management Studio 启动其他所有人,以便我们进行备份?
我目前正在研究一个 MySQL 数据库,我们看到查询缓存中有大量无效,主要是因为在许多表上执行了大量的 INSERT、DELETE 和 UPDATE 语句。
我要确定的是,允许将查询缓存用于针对这些表运行的 SELECT 语句是否有任何好处。由于它们很快就失效了,在我看来,最好的办法是在这些表的 SELECT 语句上使用 SQL_NO_CACHE。
频繁失效的开销值得吗?
编辑:应以下用户@RolandoMySQLDBA 的要求,这里是有关 MyISAM 和 INNODB 的信息。
数据库
我的ISAM
附加信息:
在mysql中考虑这个表
create table numbers (number int);
insert into numbers values (3), (2), (9);
select * from numbers;
+--------+
| number |
+--------+
| 3 |
| 2 |
| 9 |
+--------+
Run Code Online (Sandbox Code Playgroud)
是否有一个简单的查询来生成一个包含以下列的表
我想你必须创建一个数字序列才能做到这一点。如果可能,我想创建这样一个序列而不将其存储在数据库中。
相关问题:是否有一个选择查询生成从 1 到 10(或 100 或 1000)的数字序列?
mysql ×5
innodb ×3
cache ×1
disk-space ×1
memory ×1
myisam ×1
mysql-5.5 ×1
performance ×1
phpmyadmin ×1
postgresql ×1
sequence ×1
sql-server ×1
sqlite ×1
transaction ×1