我最近为旧数据库生成了脚本,发现大多数表都是用 . 创建的TEXTIMAGE_ON [PRIMARY],但只有一个文件组。
TEXTIMAGE_ON [PRIMARY] 当只有一个文件组时是多余的,对吗?
在 Linux 上使用 sqlite3,如何处理多个数据库?
我想在数据库 1 中执行以下操作?
sqlite3 database1.db
insert into database1.mytable values (select * from database2.mytable)
Run Code Online (Sandbox Code Playgroud)
我如何编写SELECT上面的 database2 查询?
我们已升级到 SQL 2012 并尝试将我们的 Dbs 反向工程到 Visio 2010。我使用 SQL 11 驱动程序设置了连接,而 Visio 抱怨不支持该驱动程序。
有人遇到过这个吗?
我有一个流量非常高的网站,每小时可能会插入 1000 条新记录。
这一错误使网站瘫痪:
PDOException: SQLSTATE[40001]: Serialization failure: 1213
Deadlock found when trying to get lock;
try restarting transaction: INSERT INTO {location_instance}
(nid, vid, uid, genid, lid) VALUES (:db_insert_placeholder_0,
:db_insert_placeholder_1, :db_insert_placeholder_2,
:db_insert_placeholder_3, :db_insert_placeholder_4);
Array ( [:db_insert_placeholder_0] => 1059 [:db_insert_placeholder_1] =>
1059 [:db_insert_placeholder_2] => 0 [:db_insert_placeholder_3] =>
cck:field_item_location:1059 [:db_insert_placeholder_4] => 1000 )
Run Code Online (Sandbox Code Playgroud)
如果 MySQL 无法处理这种类型的负载,我会感到非常惊讶。那么,我的问题是,这是一个数据库问题,我该如何配置 MySQL 才能处理这么多流量?
我在开发服务器上设置了我的网站副本,其中包含模拟添加到网站的内容负载的脚本。我正在运行带有 16GB RAM 的 Ubuntu、LAMP 堆栈。
诚然,我对数据库不是很了解。事实上,我从“apt-get install”完成后随附的默认 my.cnf 开始。表都是Innodb。你会推荐什么起始配置设置和方法来开始解决这个问题?
让我知道您可能需要更多信息。
谢谢
我试图找出 SQL 或非 SQL 解决方案是否更适合创建事件数据库。我正在创建一个票务系统,类似于票务主。我知道对于任何一种数据库类型的存储都是简单的部分。决定因素是以下查询的性能:
事件基本上有 ID、NAME、LOCATION、VENUE、START DATE、END DATE
在关系模式中,我会有一个 EVENTS 表,一个用于单独存储日期的 DATES 表,因为事件可以发生在多个日期并且它们是可重复的,以及一个 VENUES 表,可以从中获取事件位置(国家、城市等)交叉引用。
我没有使用 no-SQL 数据库的经验,因此如果您投票支持 no-SQL,请建议您如何看待“架构”的组织方式以及哪个特定的数据库。
我希望这个问题足够具体。查询性能是决定性因素。
经过进一步考虑,我意识到这个问题更适合提炼出日期/时间函数的可用性,这些函数可以促进快速日期范围查询。我知道 MySQL 和 PostgreSQL 有这样的功能。在这一点上,PostgreSQL 在语法方面甚至看起来更好一些。我不知道 NoSQL 解决方案必须为此提供什么。
我知道系统当然可以在关系数据库中轻松建模。我也知道每个 no-sql 解决方案都是不同的。我想知道是否有人对特定的 no-sql 数据库有任何特定知识,可以引用为什么该特定数据库对解决方案有好处。
有没有办法可以确定计划是为特定查询生成的,还是在计划缓存中找到的?
我正在尝试编写一个用空格替换特殊字符的查询。下面的代码有助于识别行。(字母数字字符、逗号和空格有效):
SELECT columnA
FROM tableA
WHERE columnA like '%[^a-Z0-9, ]%'
Run Code Online (Sandbox Code Playgroud)
如何将替换函数集成到 select 语句中,以便结果集中除字母数字、逗号和空格之外的所有字符都替换为 ' '(空格)。这个不行:
SELECT replace(columnA,'%[^a-Z0-9, ]%',' ')
FROM tableA
WHERE columnA like '%[^a-Z0-9, ]%'
Run Code Online (Sandbox Code Playgroud) 我们在一个有 18 亿行的数据库上运行了一个删除查询。这次删除将删除 12 亿行。
事后看来,我们会一次将这个查询分解为 100m,但现在它已经运行了 24 小时,并且日志文件的大小为 2Tb,这似乎是日志文件所允许的最大大小。
数据库处于简单恢复模式。
有没有保存这个查询?还是我们只需要重新启动 SQL Server 看看会发生什么?数据库会无法使用吗?我们可以做些什么来尽可能干净地消除它?
我在 MySQL 5.7.22 数据库中有两个表:posts和reasons. 每个帖子行都有并属于许多原因行。每个原因都有一个与之相关的权重,因此每个帖子都有一个与之相关的总聚合权重。
对于每增加 10 个权重点(即 0、10、20、30 等),我想获得总权重小于或等于该增量的帖子数。我希望结果看起来像这样:
weight | post_count
--------+------------
0 | 0
10 | 5
20 | 12
30 | 18
... | ...
280 | 20918
290 | 21102
... | ...
1250 | 118005
1260 | 118039
1270 | 118040
Run Code Online (Sandbox Code Playgroud)
总权重近似正态分布,有一些非常低的值和一些非常高的值(目前最大值为 1277),但大多数在中间。中有不到 120,000 行posts,大约有 120行reasons。每个帖子平均有 5 到 6 个理由。
表的相关部分如下所示:
CREATE TABLE `posts` (
id BIGINT PRIMARY KEY
);
CREATE TABLE `reasons` ( …Run Code Online (Sandbox Code Playgroud) sql-server ×5
mysql ×2
aggregate ×1
cache ×1
deadlock ×1
delete ×1
filegroups ×1
innodb ×1
insert ×1
maintenance ×1
mongodb ×1
mysql-5.7 ×1
nosql ×1
performance ×1
replace ×1
sqlite ×1
t-sql ×1
visio ×1