我想了解数据库复制在概念上是如何工作的。我知道数据库有自己的日志(例如,MongoDB中的OpsLog),但是您可以在网上找到的大多数信息都是关于设置复制的,而不是复制的工作方式。
我也对理解MS SQL Server或MySQL如何专门进行复制不感兴趣。我更想掌握复制的基本思想和概念。
不幸的是,我不知道要寻找的术语,所以如果我寻找
数据库复制如何工作?
要么
概念上的数据库复制
我最终访问了数百个网站,解释了如何使复制适用于数据库X,但是我无法在概念上给出解释。
有什么提示吗?(请注意,我当然会对详细的答案感到满意,但即使是关于在网络上搜索内容的小提示也会很棒!)
PS:首先,即使对单向复制的工作原理进行解释也将有所帮助。
PPS:既然数据库索引是如何工作的?一直是一个有效的问题,我希望我的也是有效的,不要因为“范围太广”而被关闭或否决。
我有一个非常简单的表格:
CREATE TABLE IF NOT EXISTS LuxLog (
Sensor TINYINT,
Lux INT,
PRIMARY KEY(Sensor)
)
Run Code Online (Sandbox Code Playgroud)
它包含来自不同传感器的数千个日志。
我希望所有传感器都有 Q1 和 Q3。
我可以对每个数据进行一次查询,但最好对所有传感器进行一次查询(从一次查询中获取 Q1 和 Q3)
我认为这将是一个相当简单的操作,因为四分位数被广泛使用并且是频率计算中的主要统计变量之一。事实是,我发现了大量过于复杂的解决方案,而我希望找到一些简洁明了的解决方案。
任何人都可以给我一个提示?
编辑:这是我在网上找到的一段代码,但它对我不起作用:
SELECT SUBSTRING_INDEX(
SUBSTRING_INDEX(
GROUP_CONCAT( -- 1) make a sorted list of values
Lux
ORDER BY Lux
SEPARATOR ','
)
, ',' -- 2) cut at the comma
, 75/100 * COUNT(*) -- at the position beyond the 90% portion
)
, ',' -- 3) cut at the comma
, -1 -- right after …Run Code Online (Sandbox Code Playgroud) 我的数据库中有一个问题表,这里是问题表的列和数据类型
Field Datatype
QID BIGINT
UserID INT(11)
Question VARCHAR(100)
Description Text
Date DateTime
Status TINYINT
Run Code Online (Sandbox Code Playgroud)
该表预计有大约 200 万个条目,我的问题是,如果我根据 QID、UserID 或 Question 搜索记录,如何计算查询执行时间。
我最近一直在阅读如何clustered index和non-clustered index有效的方法.我用简单的术语理解(如果错误,请纠正我):
支持clustered和non-clustered index存在的数据结构B-Tree
Clustered Index:根据索引列(或键)对数据进行物理排序.你只能有一个clustered Index每个table.如果没有index表创建过程中指定,SQL服务器将自动创建clustered Index的primary key column.
Q1:由于数据是根据索引进行物理排序的,因此这里不需要额外的空间.它是否正确?那么当我删除我创建的索引时会发生什么?
Non-clustered Index:在non-clustered indexes,leaf-node树的包含列值和指向数据库中实际行的指针(行定位器).这里存在将non-clustered index table物理存储在磁盘上所需的额外空间.但是,一个不受数量的限制non-clustered Indexes.
Q2:这是否意味着对非聚集索引列的查询不会导致排序数据?
问题3:此处有一个额外的查找,用于使用叶节点处的指针定位实际的行数据.与聚簇索引相比,这会有多大的性能差异?
锻炼; Tibial:
考虑一个Employee表:
CREATE TABLE Employee
(
PersonID int PRIMARY KEY,
Name varchar(255),
age int,
salary int
);
Run Code Online (Sandbox Code Playgroud)
现在我创建了一个employee表(创建了employee上的默认聚簇索引).
此表上的两个常见查询仅发生在年龄和工资列上.为简单起见,我们假设表不经常更新
例如:
select * from employee where age …Run Code Online (Sandbox Code Playgroud) 我正在使用基于Lucene索引构建的Hibernate Search.如果针对数据库表创建索引,则返回结果的性能将很好.
我的问题是,一旦创建了索引,如果我们查询结果,Hibernate Search是否使用创建的索引从原始数据库表中获取结果?或者它不需要命中数据库来获取结果?
谢谢!
嗨,我MySQL在某种程度上了解索引。
我可以在创建表时创建索引
CREATE TABLE Product (
-> ID SMALLINT UNSIGNED NOT NULL,
-> ModelID SMALLINT UNSIGNED NOT NULL,
-> PRIMARY KEY (ID),
-> INDEX (ModelID)
Run Code Online (Sandbox Code Playgroud)
创建表后添加索引
CREATE INDEX index_name
ON table_name (column_name)
Run Code Online (Sandbox Code Playgroud)
也改变索引
ALTER TABLE TABLE_NAME ADD INDEX (COLUMN_NAME);
Run Code Online (Sandbox Code Playgroud)
**我想知道的是索引如何使选择查询快速
索引如何影响选择算法MySQL,索引列如何影响算法?请解释一下,提前致谢
有一个查询运行速度比我想要的慢.查询已经是正确的,我已经重构了它,但我不能让它运行得足够快.在可能的情况下,谓词已经具备了Sarg-able功能.它已经正确使用连接,不请求额外的表,并且不会不必要地复制行或使用嵌套子查询以减慢它的速度.
我不是DBA,我不知道如何选择一个好的索引来加快查询速度.我可以改变桌子结构; 没有DBA负责数据库,我在数据库服务器上拥有这样做的权限.
如何优化SQL查询?
sql ×5
mysql ×4
database ×3
indexing ×3
hibernate ×1
java ×1
lucene ×1
percentile ×1
performance ×1
php ×1
quantile ×1
replication ×1