データベース管理者

データベースのスキルを向上させ、コミュニティの他の人から学びたいデータベースの専門家向けのQ&A

3
巨大なテーブルにクラスター化インデックスを作成する簡単な方法
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 7年前に移行され ました。 そのため、パフォーマンスが大幅に低下していると不満を言っているカスタマーサイトがあります。ひと目見てみると、問題は、Somebody Else(grrrr)がクラスター化インデックスなしで約2,000万件以上のレコードを保持するテーブルを設計したためであることは明らかです。 次に、そのテーブルにクラスター化インデックスを作成しますが、テスト環境ではcreate indexコマンドが1時間実行されており、まだ実行されていません。顧客サイトは24時間年中無休で稼働する作業場であり、インデックスを作成している間は1時間のダウンタイムは許されません。 インデックスを作成するためのブルートフォースの少ない方法で、ジョブをすばやく終了するか、ビジー状態のときにサーバーのパフォーマンスを完全に低下させないスマートな方法で実行しますか? SQL Server Enterprise Editionを使用しています。

2
クラスター化インデックスと非クラスター化インデックスのパフォーマンスの違い
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 7年前に移行され ました。 私が読んでいたClusteredとNon Clustered Indexes。 Clustered Index-データページが含まれています。つまり、完全な行情報がクラスター化インデックス列に表示されます。 Non Clustered Index-クラスター化インデックス列(利用可能な場合)またはファイル識別子+ページ番号+ページ内の合計行の形式の行ロケーター情報のみが含まれます。これは、クエリエンジンが実際のデータを見つけるために追加の手順を実行する必要があることを意味します。 クエリ -私たちは、テーブルが一つだけ持つことができることを知っているとどのように私は実用的な例の助けを借りて、パフォーマンスの違いを確認することができますClustered Indexし、提供sorting時Clustered Index ColumnとNon Clustered Index提供していないsortingと999をサポートすることができますNon Clustered Indexes中SQL Server 2008にして249 SQL Server 2005。

4
結果を最初の2つのランキング行に制限する
SQL Server 2008では、を使用RANK() OVER (PARTITION BY Col2 ORDER BY Col3 DESC)してデータセットを返すために使用していRANKます。ただし、各パーティションには数百のレコードがあるため、ランク1、2、3 ...... 999から値を取得します。しかし、私RANKsはそれぞれ2つまでしかしたくないPARTITION。 例: ID Name Score Subject 1 Joe 100 Math 2 Jim 99 Math 3 Tim 98 Math 4 Joe 99 History 5 Jim 100 History 6 Tim 89 History 7 Joe 80 Geography 8 Tim 100 Geography …

5
インスタンスのパフォーマンスを維持するために定期的な再起動が必要なのはなぜですか?
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 7年前に移行され ました。 SQL 2005に運用DBサーバーがあります。すべてはしばらく正常に動作しますが、数週間後、顕著なパフォーマンスの低下が見られます。SQL Serverを再起動するだけで、パフォーマンスが通常に戻ります。 背景: 1200以上のデータベース(ほとんどが単一テナント、一部がマルチテナント)を実行しています。マルチテナントのみへの移行について講義する前に、この構造を維持する正当な理由があります...... RAMは16 GBです。再起動後、SQL Serverが15 GBの使用量に戻るのにそれほど長くかかりません。 アクティブDB接続は約80の接続です-プロセスごとにWebサーバーごとに1つの接続プールがあることを考えると、かなり健全であると感じているため、接続リークの問題はありません。 ピーク時以外にいくつかのことを試しました。-DBCC DROPCLEANBUFFERS(チェックポイント付き)を実行して、データキャッシュをクリアします。効果はなく、RAM使用量もクリアされません)。-FREEPROCCACHEおよびFREESYSTEMCACHEを実行して、クエリプランとストアドプロシージャキャッシュをクリアします。無効。 明らかに、SQL Serverを再起動することは、アクティブな運用環境では理想的ではありません。何かが欠けています。他の誰かがこれを通過しますか? 更新:April-28-2012 まだこの問題と戦っています。OSとの競合を排除するために、SQL Serverのメモリを10 GBに下げました。絞り込みに近づいていますが、次のステップからの助けが必要です。 SQL Serverを再起動した後、ページファイルが12.3 GBから12.5 GBの間でホバリングしていることがわかりました。それは数日間そのままです。合計サーバースレッドは850から930の間でハングアウトします-安定しており、終日一貫しています(sqlserverはトラフィックに応じて55から85の間で安定しています)。 次に、「イベント」があります。私はイベントが何であるかわからず、ログでそれを見ることができず、曜日またはそれが起こる時間に一貫したものを見ることはできませんが、突然ページファイルはすべて14.1または14.2のいずれかにジャンプしますGB、およびスレッドは1750〜1785の間にジャンプします。 これが発生したときにパフォーマンスをチェックすると、これらのスレッドのうち900以上がsqlserverです。したがって、sp_who2にアクセスして、これらのスレッドがどこから来ているのかを確認します。使用されている80個程度のdb接続があります。 だから.... SQLサーバー上のこれらの900個のスレッドの残りがどこにあるのか、そして彼らが何をしているのかを見つけることができるアイデアはありますか? 更新:2012年6月1日 まだ問題と戦っています。まだこれを読んでいる人にとっては、スレッドが跳ね上がる問題は解決されています。これは、自動化されたComVaultバックアップソフトウェアが原因でした。現在のデータベースを単にバックアップするのではなく、もはや存在しないデータベースをバックアップしようとするスレッドを作成していました(以前のデータベースのリストを維持していました)。 しかし、問題はまだ残っており、毎週再起動する必要があります。Rackspaceチームと協力して、光を当てられるかどうかを確認します。

2
Percona対MySQL
パーコナとは? MySQLとの違いは何ですか? ストックMySQLからPerconaへの切り替え(またはアップグレード)をいつ検討する必要がありますか? 状況にいくつかの仕様を追加するために、InnoDB(Perconaは多くの最適化を行っていると理解しています)をほぼ排他的に使用し、広範な外部キー制約といくつかのストアドプロシージャを使用します。 現在、MySQLはクエリの最適化が不十分であるため、3〜4の結合を超えるクエリはパフォーマンスを改善するためにSTRAIGHT結合で明示的に構築する必要があります。

3
完全バックアップ中にトランザクションログのバックアップを停止する必要がありますか?
異なる間隔で実行するようにスケジュールされた2つのSQLエージェントジョブがあります。最初のジョブは、1日に1回完全バックアップを実行します。2番目のジョブは、15分ごとにトランザクションログのバックアップを実行します。 データベースの成長に伴い、完全バックアップは当初の計画よりも時間がかかります(圧縮しても)。そして、ログから、トランザクションログのバックアップが同時に実行されていることに気付きました。 完全バックアップの実行中に実行されないように、トランザクションログバックアップのスケジュールを変更する必要がありますか?それは重要ですか?

5
SQL Serverを再起動すると速度が上がりますか?
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 8年前に移行され ました。 一部のDBAがSQL Serverを非常に頻繁に、時には夜間でも再起動することに気付きました。メモリを解放するために、またはクエリを高速化するために、彼らがそれを行うと信じています。再起動後にクエリプランを再コンパイルする必要があることは知っていますが、それを含めて、このプラクティスに最終的なメリットがあるのではないかと考えています。 SQL Serverを毎日再起動すると、実行速度が向上するのは本当ですか?

4
varchar(8000)を設定するとどのような結果になりますか?
varcharはフィールドのサイズに比例してディスク領域を使用するため、たとえばvarchar(8000)SQL Serverで、varcharを常に最大値として定義する必要がない理由はありますか? テーブルを作成するときに、誰かがやっているのを見たらvarchar(100)、あなたは間違っていると言ってはいけませvarchar(8000)んか?

4
MySQLエラー:ユーザー 'a' @ 'localhost'のアクセスが拒否されました(パスワードを使用:YES)
アカウントを作成したルートアカウントを使用します'a'@'%'。しかし、hostパラメーターを指定すると、アカウントを使用してMySQLサーバーに接続できません。-hパラメータなしで正常に接続できます。以下のトランスクリプトをご覧ください。誰かがそれを説明するのを手伝ってくれることを願っています。ありがとう。 mysql> grant all on *.* to 'a'@'%' identified by a; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'a' at line 1 mysql> grant all on *.* to 'a'@'%' …

6
InnoDBテーブルが変更されたかどうかを確認する最速の方法
私のアプリケーションは非常にデータベース集約型です。現在、MySQL 5.5.19を実行しており、MyISAMを使用していますが、InnoDBに移行中です。残っている唯一の問題は、チェックサムのパフォーマンスです。 私のアプリケーションはCHECKSUM TABLE、ピーク時に毎秒約500-1000 ステートメントを実行します。これは、クライアントGUIが変更のためにデータベースを絶えずポーリングしているためです(監視システムであるため、非常に応答性が高く、高速である必要があります)。 MyISAMには、テーブルの修正時に事前計算された非常に高速なライブチェックサムがあります。ただし、InnoDBにはそのようなものはありません。だから、非常にCHECKSUM TABLE遅いです。 テーブルの最終更新時間を確認できるようにしたいと考えています。残念ながら、これはInnoDBでも利用できません。テストでは、アプリケーションのパフォーマンスが大幅に低下することが示されているため、私は今立ち往生しています。 テーブルを更新するコードの行が多すぎるため、アプリケーションにロジックを実装してテーブルの変更を記録することは問題外です。 InnoDBテーブルの変更を検出する高速な方法はありますか?

2
saパスワードをどのようにリセットしますか?
マシンでsaパスワードを失い、adminグループのアカウントを使用してマシンに直接ログインすると、SQL Server Management StudioはWindows認証を使用したログインを許可しません。 私の計画は、単にサーバーにログインし、Windows認証を介して接続し、saをリセットして新しいパスワードを使用することでした。Windows認証経由で接続できないため、これは機能しません。 saパスワードをリセットするにはどうすればよいですか?

7
インデックス戦略に関するガイダンスはどこで入手できますか?
私たちのほとんどは、おそらくデータベースインデックスを使用するのが良いことに同意するでしょう。インデックスが多すぎると、パフォーマンスが実際に低下する可能性があります。 原則として、どのフィールドにインデックスを付ける必要がありますか? どのフィールドにインデックスを付けるべきではありませんか? パフォーマンスの向上ではなく、パフォーマンスの向上を達成するために、インデックスの数が多すぎて十分ではないというバランスを取りながら、インデックスを使用するためのルールは何ですか?
22 index 

3
LIKEはどのように実装されますか?
LIKE演算子が現在のデータベースシステム(MySQLやPostgresなど)にどのように実装されているかを説明できますか?またはそれを説明するいくつかの参照を教えてください? 素朴なアプローチは、各レコードを検査し、対象フィールドで正規表現または部分的な文字列の一致を実行することですが、これらのシステムがよりスマートに動作することを感じています。

7
SQL ServerをMySQLに移行する必要がある
Windowsサーバー上のSQL Server 2008にデータベースがあり、Ubuntuサーバー上のMySQLデータベースにすべてのデータを移動したい。MySQL ODBCドライバーでSQL Serverのインポートおよびエクスポートウィザードを使用してみましたが、両方のデータベースに正しくアクセスしましたが、型変換の仕様を含むxmlファイルは存在せず、仕様を作成するには正しく制限されていました。型変換ファイルを作成する方法、またはこのデータを転送するためのより良いツールを入手する場所のいずれかを知っていますか?

7
ユーザーをSQL Server 2008データベースから追​​い出すにはどうすればよいですか?
他のユーザーが接続されているため、復元を行う必要があります。すべてのプロセスを切断したと思いましたが、明らかにそうではありませんでした。 Management Studioからこのバックアップを実行できるように、他のすべてのユーザーを開始するにはどうすればよいですか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.