我正在建模一个用于车辆备件库存管理的数据库,但我被卡住了......
一些备件可以从套件分解成组件。我想创建一个支持此功能的模型,但不知道如何构建它。
备件可以成套或件发。数据库应该保存关于我们有多少完整集以及有多少被分解成碎片的信息。例如,一套活塞环将有 6 个不同的单独活塞环。
你能为我指出正确的方向吗?
我刚刚将我的 Wordpress 数据库切换为使用 InnoDB 引擎。
使用 MyISAM 时,我曾经运行Optimize和Repair table. 但是,对于 InnoDB,这些不起作用。
我手动运行OPTIMIZE TABLE并建议ALTER TABLE但没有一个删除开销。我在mysqltuner显示 14 个碎片表的服务器上运行- 我总共有 14 个表。即使在运行optimizeand 之后alter tables,所有 14 个表仍然碎片化!
我怎样才能正确地OPTIMIZE和REPAIRInnoDB 表?
我正在设置一个新系统,我想对数据进行分区以提高速度。基本上我想做的是拥有一个包含所有最新信息(例如过去 3 个月)的数据库。然后有一些分区表来存储比这更旧的数据。没有选择 mysql 或 sql server express 因为不确定哪一个具有所需的功能。
我已经阅读了一些关于范围分区如何工作的示例,如下所示:
CREATE TABLE SAMPLE_ORDERS
(
ORDER_NUMBER NUMBER,
ORDER_DATE DATE,
CUST_NUM NUMBER,
TOTAL_PRICE NUMBER,
TOTAL_TAX NUMBER,
TOTAL_SHIPPING NUMBER
)
PARTITION BY RANGE(ORDER_DATE)
(
PARTITION SO99Q1 VALUES LESS THAN TO_DATE(‘01-APR-2010’, ‘DD-MON-YYYY’),
PARTITION SO99Q2 VALUES LESS THAN TO_DATE(‘01-JUL-2010’, ‘DD-MON-YYYY’),
PARTITION SO99Q3 VALUES LESS THAN TO_DATE(‘01-OCT-2010’, ‘DD-MON-YYYY’),
PARTITION SO99Q4 VALUES LESS THAN TO_DATE(‘01-JAN-2011’, ‘DD-MON-YYYY’),
PARTITION SO00Q1 VALUES LESS THAN TO_DATE(‘01-APR-2011’, ‘DD-MON-YYYY’),
PARTITION SO00Q2 VALUES LESS THAN TO_DATE(‘01-JUL-2011’, ‘DD-MON-YYYY’),
PARTITION SO00Q3 VALUES LESS THAN TO_DATE(‘01-OCT-2011’, ‘DD-MON-YYYY’), …Run Code Online (Sandbox Code Playgroud) MySQL 是否有任何限制,例如大小或记录限制?
我正在处理的数据库中最大的表有超过 150,000 行。MySQL 能解决这个问题吗?
我在 Windows Server 2008 R2 上运行 PostgreSQL 9.1。我通过修改 postgresql.conf 文件启用了将 SQL 语句记录到 stderr 日志,但现在我似乎无法在不关闭所有日志记录的情况下禁用日志记录。服务器通过 pg_ctl reload 发送 SIGHUP 信号,并且在每次尝试修复此问题后服务已重新启动。重新启动整个机器似乎也没有帮助。
我当前的 postgresql.conf 中的特定行应该已经完成了这个,但不是:
log_destination = 'stderr'
logging_collector = on
log_directory = 'pg_log
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
#debug_print_parse = off
#debug_print_rewritten = off
#debug_print_plan = off
#debug_pretty_print = on
#log_checkpoints = off
#log_connections = off
#log_disconnections = off
#log_duration = off
#log_error_verbosity = default
log_hostname = on
log_line_prefix = '%t %a %u %r '
#log_lock_waits = off
log_statement = 'none'
#track_activities = on …Run Code Online (Sandbox Code Playgroud) 我现在无法对此进行测试,但是我对答案很好奇。
如果我在表 A 上有一个触发器将新记录写入表 B,会LAST_INSERT_ID()告诉我更新的IDA 或 B吗?我对 MySQL 和 PHP 都很好奇,但我的理解是 PHP 只是调用 MySQL 的实现。
如果 B 通常返回 A,我如何获取 B 的最后插入的 ID,反之亦然?
我在 stackoverflow 上问了这个问题,并被指示在这里问这个问题。
我有几个运行 MySQL 查询的 PHP 脚本。有时,它们会导致服务器卡住或被 MySQL 进程阻塞,这些进程需要一段时间,例如格式错误LEFT JOINs等。
当我运行查询以查找有关已运行的所有当前 MySQL 查询的信息时,是否可以将查询 ID 解析为运行它的文件?
有一个查询一直在休眠 3973 没有关于这个查询的信息,所以我试图找到尽可能多的信息?
这是我关于 DBA 的第一篇文章。我想从你那里得到一些明确的想法。首先,这听起来像是讨论,但它不是辩论。我正在寻找的可能是“是的,他们可以为所欲为”或“不,不可能!”
最近我完成了一个web应用程序的开发。完成后,我被告知联系服务器区域部门,以便他们可以帮助我上传我的 SQL 数据库、授予权限等。
所以,我这样做了。他们解释了他们是如何工作的,我们同意上传一个非操作版本的数据库,所以我们可以测试权限等。他们告诉我为他们处理数据库的备份。他们会恢复它。第一件事就是在我心里制造噪音。我不应该是恢复备份的人吗?“嗯……我还不是 dba,我相信他们更清楚。” 是我对自己的回答,因为这些可能是他们的做法。
两天后,他们给我发了一封电子邮件,说备份已启动并提供了一些建议。他们需要对我的数据库表进行规范化并拥有正确的索引。
我的反应并不甜蜜。首先,我们都讨论过它,备份不是操作性的......那么,有任何相关结论吗?......顺便说一下,表格都完全规范化了。其次,他们可以进入那么深吗?如果我的数据库中包含的信息很关键怎么办?
非常感谢,希望对这个问题有一些见解。
在 MySQL 中,我有一个表(针对这个问题进行了简化)
CREATE TABLE `projects` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`priority` int(11) DEFAULT '1000000',
`status` enum('new','in_progress','complete') DEFAULT 'new',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
Run Code Online (Sandbox Code Playgroud)
我想从按优先级排序的表中进行选择,但将状态为“完成”的行排在最后。
这有效:
SELECT * FROM projects
order by
case
when status='complete' then 999999
when status!='complete' then priority
end ASC
Run Code Online (Sandbox Code Playgroud)
但是将 999999 更改为 (select max(priority)+1 from projects) 会产生意想不到的结果,出现状态=完成的结果行第一页的一半。
此外,最后一种方法可能会导致重复计算相同的值。
做这个的最好方式是什么?
我试图找到找到一个点到点表的最小距离的最快方法。唯一需要注意的是,我试图找到最小距离的点表是 150K 单点。
或者更好地解释表 A 有 150K 行/点,表 B 1500 点。我想知道表 A 中的每一行与表 B 中列出的所有行的最小距离是多少。
我有一个进行距离计算的函数,作为表 A 的附加列。它只需要很长时间。表 B 有一个空间索引。
这就是我所拥有的:
select a.*,
dbo.fxn_distance(geography::STPointFromText('POINT(' +
CAST([Long] AS VARCHAR(20)) + ' ' + CAST([Lat] AS
VARCHAR(20)) + ')', 4326)) as DistAway
from Table A a
Run Code Online (Sandbox Code Playgroud)
我的功能:
create function fxn_distance
(@pointTableA geography
)
returns float
as
begin
declare @distance float
select top 1 @distance = b.GeoLocation.STDistance(@pointTableA)
from TableB b
where geolocation.STDistance(@pointTableA) is not null
order by geolocation.STDistance(@pointTableA)
return @distance
end
Run Code Online (Sandbox Code Playgroud)
对不起,如果我完全是一个新手,我知道解决方案可能很简单,但我无法解决这个问题。所以希望澄清一下:我需要通过表 A …
mysql ×6
sql-server ×3
innodb ×1
logs ×1
order-by ×1
partitioning ×1
postgresql ×1
schema ×1
spatial ×1
t-sql ×1
trigger ×1