我在 Linux Centos 上有 MySQL 5.1.35。Linux 服务器有 2GB RAM 和 14GB 磁盘空间。
我使用 Java 中的 Restlet 框架创建了一些 Web 服务,该框架拥有 1,000 多个用户。
我应该max_connections为最大并发连接设置什么?
我在 Amazon Web Services 上有一个 RDS MySQL 数据库。
我想减少控制面板中数据库的大小以节省资金。
问:如何让它变小?他们的网站说你必须用某种神奇的方式(从备份或其他方式),但我不想错误地重击它!
请一步一步...谢谢!

这就是发生的事情:亚马逊问我想要的最大尺寸应该是多少。我选择了 10GB。然后我添加数据,直到表超过 10GB。然后亚马逊自动将大小限制增加到 20GB。在他们的手册中,他们说“增加”是自动的,但“减少”不是。
在删除一些多余的数据后,数据大小再次低于 10GB,有没有办法创建一个新的 10GB db 并使用快照将数据复制到它?
我正在编写一些动态 SQL 来识别,也许如果我觉得够疯狂,可以自动将我的NONCLUSTERED索引转换为CLUSTERED索引。
ORDER BY 1,2,3 DESC;下面的 SQL 中的这一行旨在在DROP INDEX...语句之前输出语句ALTER TABLE...,以便先删除 NONCLUSTERED 索引,然后添加一个 CLUSTERED 索引。我必须在第DESC3 列之后添加DROP,然后是 ALTER。这是倒退,除非我失去它!
DECLARE @Server nvarchar(max);
DECLARE @Database nvarchar(max);
DECLARE @cmd nvarchar(max);
DECLARE @IndexType int;
SET @IndexType = 2; /* 1 is CLUSTERED, 2 is NONCLUSTERED */
SET @Server = 'MyServer';
SET @Database = 'MyDatabase';
SET @cmd = '
DECLARE @cmd nvarchar(max);
SET @cmd = ''
SET NOCOUNT ON;
DECLARE @IndexInfo TABLE (TableName nvarchar(255), IndexName …Run Code Online (Sandbox Code Playgroud) 我在生产服务器上有几个数百 GB 的数据库,每天都有成千上万的事务通过它们运行。
几乎所有这些数据库都使用 SQL Server 镜像进行镜像。
尽管我们已经仔细规划了物理日志文件大小以匹配预期的日志文件活动;偶尔会出现问题,日志需要增长到超出我们预测的最大值。我们已将所有日志文件设置为增长 8192MB,但是当数据库面临增长日志文件的压力时,它有时只会以非常小的块增长日志,从而在某些情况下创建数十万个虚拟日志文件 (VLF) .
当我们的一个生产数据库意外恢复超过 200,000 个 VLF 时,我开始理解保持低 VLF 数量的重要性。恢复需要 20 多个小时;在此期间,我们的部分业务无法运营。
我需要一个可以监控服务器上所有数据库的虚拟日志文件数量的解决方案,如果任何特定日志文件的 VLF 数量超过给定数量,则发送警报电子邮件。
我知道DBCC LOGINFO;返回 VLF 列表,但是,我不想手动运行它。
我创建了以下 SQL 语句,该语句创建了一个列出数据库以及 VLF 数量的漂亮表,但是,我不知道如何将其放入 SQL 代理作业中,以便在任何数据库的数量超过“x”时向我们的团队发送电子邮件的 VLF。
DECLARE @cmd_per_database_prefix nvarchar(max);
DECLARE @cmd_per_database nvarchar(max);
DECLARE @database_name nvarchar(255);
SET @cmd_per_database = '';
SET @cmd_per_database_prefix =
'
SET NOCOUNT ON;
DECLARE @vlf_count_table TABLE (database_name nvarchar(255), vlf_count int);
DECLARE @params nvarchar(max);
DECLARE @db_name nvarchar(255);
DECLARE @vlf_count int;
SET @params = ''@db_name nvarchar(255) OUTPUT, @vlf_count …Run Code Online (Sandbox Code Playgroud) 我使用带有PostGIS的 PostgreSQL 9.3来存储位置更新。更新写入两个表 -location_updates和location_updates_history.
每个人都有:
car_idgeom 柱子每次更新都会写入location_updates表,然后触发器函数会将相同的更新写入location_updates_history. 更新后,除最新的 10 个更新外,所有更新都car_id将被删除。因此,该location_update表以移动窗口的方式包含了每辆车的最新 10 次更新,并且该location_updates_history表包含了它的完整历史记录。
我发现我只需要每辆车的最新更新,而不是最新的 10,所以我运行以下命令:
DROP TRIGGER location_update_insertion_trigger ON location_update;
DELETE FROM location_update WHERE id NOT IN
(SELECT max(id) FROM location_update GROUP BY cat_id);
ALTER TABLE location_update DROP COLUMN id CASCADE;
ALTER TABLE location_update ADD PRIMARY KEY (car_id);
Run Code Online (Sandbox Code Playgroud)
经过几个小时的工作,数据库处于完全锁定状态 - 非常糟糕,甚至其架构上的 pg_dump 也被阻止了。
在 …
首先,我意识到有人问过类似的问题,并且对于 679 页的索引,海报的页数设置为 1000;不是怎么回事。
我将 Ola 的脚本设置为
@Databases nvarchar(max)
,@FragmentationLow nvarchar(max) = null
,@FragmentationMedium nvarchar(max) = 'INDEX_REORGANIZE'
,@FragmentationHigh nvarchar(max) = 'INDEX_REBUILD_ONLINE'
,@FragmentationLevel1 int = 50
,@FragmentationLevel2 int = 75
,@PageCountLevel int = 400
,SortInTempdb nvarchar(max) = 'N'
,maxdop int = null
,fillfactor int = null
,PadIndex nvarchar(max) = null
,LOBCompaction nvarchar(max) = 'Y'
,UpdateStatistics nvarchar(max) = 'ALL'
,OnlyModifiedStatistics nvarchar(max) = 'Y'
,StatisticsSample int = null
,StatisticsResample nvarchar(max) = 'N'
,PartitionLevel nvarchar(max) = 'Y'
,MSShippedObjects nvarchar(max) = 'N'
,Indexes nvarchar(max) = …Run Code Online (Sandbox Code Playgroud) index sql-server index-statistics fragmentation ola-hallengren
我在 Windows Server 2016 Core 上安装了 SQL Server 2016。在本地,它似乎有效。我可以连接使用SQLCMD.exe并做一些基本的选择,什么不是。
从远程,我无法连接。使用SQLCMD.exe远程计算机上:
sqlcmd -S boldiq_db3
Sqlcmd: Error: Microsoft SQL Server Native Client 11.0 : Named Pipes
Provider: Could not open a connection to SQL Server [53]. .
Sqlcmd: Error: Microsoft SQL Server Native Client 11.0 : Login timeout
expired.
Sqlcmd: Error: Microsoft SQL Server Native Client 11.0 : A network-related
or instance-specific error has occurred while establishing a connection
to SQL Server. Server is not found or not …Run Code Online (Sandbox Code Playgroud) 我有一个文本列,其中包含已缩短为缩写的各种单词。例如,该列可能包含“insd”而不是“insured”。我知道我可以使用同义词库文件来创建同义词列表,从而有效地允许搜索“insd”以返回包含“insured”和“insd”的行。完美的。
但是,该列中的其他一些缩写包含“特殊”字符,例如斜杠或与号,例如:
t/p - 第三方 o/s - 另一边 p/p - 每人 i&o - 内外兼修
有什么方法可以让我做出CONTAINS或FREETEXT理解包含这些词的查询?例如:
SELECT *
FROM dbo.MyTable
WHERE FREETEXT(MyColumn, 't/p');
Run Code Online (Sandbox Code Playgroud)
我已经在tsenu.xml实例的正确位置创建了同义词库文件:
<XML ID="Microsoft 搜索词库">
<thesaurus xmlns="x-schema:tsSchema.xml">
<diacritics_sensitive>0</diacritics_sensitive>
<扩展>
<sub>投保</sub>
<sub>insd</sub>
</展开>
<扩展>
<sub>t/p</sub>
<sub>第三方</sub>
</展开>
<扩展>
<sub>o/s</sub>
<sub>另一边</sub>
</展开>
<扩展>
<sub>p/p</sub>
<sub>每人</sub>
</展开>
</同义词库>
</XML>
并使用 加载它EXEC sys.sp_fulltext_load_thesaurus_file 1033;,但是查询返回不可预测的结果。
每隔几天我的 SQL Server 实例就会意外终止并重新启动。在日志中,请参阅:
.NET Framework 公共语言运行时发生致命错误。SQL Server 正在关闭。(事件 ID 6536)。
在终止之前,我看到几条消息说:
由于内存压力,AppDomain XXX 被标记为卸载。
我有 60 个 CLR 存储过程,它们是从我的前任那里继承而来的。所有这些都应该是使用少量数据的短存储过程。如何找到导致内存压力的 CLR 存储过程?
我在跑:
Microsoft SQL Server 2016 (SP1-CU4) (KB4024305) - 13.0.4446.0 (X64) 2017 年 7 月 16 日 18:08:49 Windows Server 2016 Standard 6.3(内部版本 14393:)(管理程序)上的标准版(64 位)
在 SQL Server 中如何...
斯普:
CREATE PROCEDURE insertToTable
@field1 VARCHAR(256), @field2 varchar(256), @field3 varchar(256)
AS
BEGIN
SET NOCOUNT ON
IF NOT EXISTS (SELECT * FROM my_table WHERE field1 = @field1)
INSERT INTO my_table
(field1, field2, field3)
VALUES (@field1, @field2, @field3);
ELSE
THROW 50000, 'xxxxxx', 1;
END
GO
Run Code Online (Sandbox Code Playgroud)
桌子:
CREATE TABLE my_table (
field1 VARCHAR(256) NOT NULL,
field2 VARCHAR(256) NOT NULL,
field3 VARCHAR(256) NOT NULL
);
CREATE INDEX idx_field1 ON my_table(field1);
Run Code Online (Sandbox Code Playgroud)
上面的比下面的快吗?
斯普:
CREATE PROCEDURE insertToTable
@field1 VARCHAR(256), @field2 varchar(256), @field3 …Run Code Online (Sandbox Code Playgroud)