データベース管理者

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

1
数値へのキャスト時に奇妙なSQL Serverインスタンスがクラッシュする
C#Entity Frameworkで作業しているときに、SQL Serverインスタンスのクラッシュに気付きました。 私はこの声明まで追跡することができました: SELECT * FROM dbo.[TestTable] where mpnr in (1099059904, 1038139906, 1048119902, 1045119902, 1002109903, 1117109910, 1111149902, 1063149902, 1117159902, 1116109904, 1105079905, 1012079906, 1129129904, 1103059905, 1065059905, 1091059906, 1110149904, 1129149903, 1083029905, 1080139904, 1076109903, 1010019902, 1058019902, 1060019903, 1053019902, 1030089902, 1018149902, 1077149902, 1010109901, 1011109901, 1000119902, 1023049903, 1107119909, 1108119909, 1106119909) テーブルは次のようになります。 CREATE TABLE dbo.[TestTable]([MPNR] …

1
同じスキーマ/クエリに対するMySQLとPostgreSQLのパフォーマンスの違い[終了]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 6年前に閉鎖されました。 私は初心者DBAであり、Microsoft SQL Serverの経験がありますが、FLOSSにジャンプしたいです。 私は会社を始めており、Postgresバックエンドでアプリ(PHP)を開発し、MySQLと比較するテストもいくつか行いました。MySQLはPostgreSQLの2倍の速度であることがわかります。 具体的なパフォーマンステストを行いました。 同等の列データ型を持つ表の同じ列。 同じ行数。 両方で同じインデックス(主キーを含む)。 CPU負荷はアイドル状態であり、Postgresマシンは大幅に改善されています。 そして、同じクエリ(明らかに)。 何が間違っていますか? PS:データベースエンジンのパフォーマンスチューニングに関する「ハウツー」をたくさん読みました。 PS(2):MySQLデータベースでInnoDB(テーブルごとに1ファイル)を使用しています。 こんにちはマット! 3つの一般的な選択(および最も難しい)クエリを実行しました。 ディスクについての質問は、確かに同じではありません。Postgresでは、SSD(ほぼ3倍の速度)です。 MySQLキャッシュデータ: +------------------------------+----------------------+ | Variable_name | Value | +------------------------------+----------------------+ | binlog_cache_size | 32768 | | have_query_cache | YES | | key_cache_age_threshold | 300 | | key_cache_block_size | 1024 | | key_cache_division_limit | …

4
実行計画と統計IO注文
SQL Serverのグラフィカルな実行計画は、右から左、上から下に読みます。によって生成された出力に意味のある順序はありSET STATISTICS IO ONますか? 次のクエリ: SET STATISTICS IO ON; SELECT * FROM Sales.SalesOrderHeader AS soh JOIN Sales.SalesOrderDetail AS sod ON soh.SalesOrderID = sod.SalesOrderID JOIN Production.Product AS p ON sod.ProductID = p.ProductID; この計画を生成します。 そして、このSTATISTICS IO出力: Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob …

6
行の2つ以上の列が特定の値を超えている場所をカウントする[バスケットボール、ダブルダブル、トリプルダブル]
統計情報をデータベースファイルとして出力できるバスケットボールゲームをプレイしているので、ゲームに実装されていない統計情報を計算できます。これまでのところ、必要な統計を計算するのに何の問題もありませんでしたが、今では問題に直面しています:プレーヤーがシーズン中に作ったダブルダブルまたはトリプルダブルの数をゲーム統計からカウントすることです。 double doubleとtriple doubleの定義は次のとおりです。 ダブルダブル: ダブルダブルとは、プレイヤーがゲーム内で5つの統計カテゴリー(ポイント、リバウンド、アシスト、スチール、ブロックショット)のうち2つに合計2桁の数字を累積するパフォーマンスとして定義されます。 トリプルダブル: トリプルダブルとは、プレイヤーがゲーム内で5つの統計カテゴリー(ポイント、リバウンド、アシスト、スチール、ブロックショット)のうち3つに合計2桁の数字を累積するパフォーマンスとして定義されます。 Quadruple-double(明確にするために追加) 4倍ダブルは、プレーヤーがゲームで5つの統計カテゴリ(ポイント、リバウンド、アシスト、スチール、ブロックショット)の4つに合計2桁の数字を蓄積するパフォーマンスとして定義されます。 「PlayerGameStats」テーブルには、プレーヤーがプレイする各ゲームの統計が格納され、次のようになります。 CREATE TABLE PlayerGameStats AS SELECT * FROM ( VALUES ( 1, 1, 1, 'Nuggets', 'Cavaliers', 6, 8, 2, 2, 0 ), ( 2, 1, 2, 'Nuggets', 'Clippers', 15, 7, 0, 1, 3 ), ( 3, 1, 6, 'Nuggets', 'Trailblazers', …

4
HashBytes関数で適切なアルゴリズムを選択する
比較のために、nvarcharデータのハッシュ値を作成する必要があります。T-SQLには複数のハッシュアルゴリズムがありますが、このシナリオで選択するのに最適なものはどれですか? 2つの異なるnvarchar値のハッシュ値が重複するリスクが最小になるようにします。インターネットでの私の研究に基づいて、MD5が最高のようです。そうですか?MSDNは、利用可能なアルゴリズムについて(下記のリンク)を教えてくれますが、どの条件のどのアルゴリズムに関する説明はありませんか? HASHBYTES(Transact-SQL) 2つのテーブルを2つのnvarchar(max)列で結合する必要があります。ご想像のとおり、クエリの実行には時間がかかります。各nvarchar(max)データのハッシュ値を保持し、ブロブであるnvarchar(max)値ではなく、ハッシュ値で結合を行う方が良いと考えました。問題は、どのハッシュアルゴリズムが一意性を提供するかです。そのため、1つ以上のnvarchar(max)に対して1つのハッシュ値を持つリスクに直面することはありません。

2
Windows認証を使用してリンクサーバーを機能させるにはどうすればよいですか?
ドメイン環境で「ログインの現在のセキュリティコンテキストを使用して作成する」を使用して、別のサーバーServerBで作成されたServerAにリンクサーバーを取得しようとしています。Kerberosを有効にするには、各サーバーでSQL Serverを実行するサービスアカウント用にSPNを作成する必要があることを読みました。私はそれを行っており、認証スキームがKerberosであることを両方とも示していますが、まだエラーに直面しています: "Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'". Active Directoryでは、ServerBのサービスアカウントがMSSQLSvcへの委任に対して信頼されていることがわかりますが、ServerAのサービスアカウントでは「このユーザーを委任に対して信頼」が有効になっていないことに気付きました。ターゲットサーバーでもそのオプションを有効にする必要がありますか?現在のWindowsログインを使用してリンクサーバーを使用できるようにするために、他に必要なものはありますか?

5
SQL Server Management Studio用のSQL Server Profilerをダウンロードする
SQL Server 2008データベースをプロファイルして、特定のデータベースで実行されているコードを確認するにはどうすればよいですか?SQL Serverプロファイラーを使用したことを覚えていますが、SQL Server 2008 R2 Expressをダウンロードした後、SQL Server Management Studioに表示されません。そのツールはどこでダウンロードしてインストールできますか?このオプションを表示するには、SQL Server 2008のフルバージョンが必要ですか?

5
PostgreSQLに最適なクラウドプラットフォーム[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、データベース管理者のStack Exchangeのトピックになるようにします。 6年前に閉鎖されました。 現在、プロジェクトでは、PostgreSQLデータベース専用のサーバーを使用しています。 理論的には、一部のクラウドプラットフォームで何でも実行できます。ただし、PostgreSQLの構成はハードウェア構成に厳密に関連しています。私たちが探しているのは、ネイティブPostgreSQLをサポートするクラウドソリューションです。 目的の機能のリストは次のとおりです。 選択したリソースに応じた自動データベース構成調整 すぐに使用可能な複製セットアップ それでは、そのようなサービスのオプションと最良の選択は何ですか?
20 postgresql  cloud 

4
SQL Serverから取得したデータは送信用に圧縮されていますか?
Microsoft SQL Serverから取得したデータは圧縮されていますか?これが接続文字列によって制御されている場合、特定のアプリが接続文字列を使用しているかどうかを確認する簡単な方法はありますか? 私は分析ツールを検討していますが、データ量がネットワークを介して送信されるのに数分かかる場合があります。同じリモートサーバー上の圧縮データストアからデータを取得する場合、パフォーマンスの向上を期待する必要があるかどうか疑問に思っています。 私たちがこのトピックについて話している限り、興味があります。データはバイナリで送信されますか、それともASCIIで送信されますか?たとえば、値12345がINT列からクエリされる場合、5バイト0x31、0x32、0x33、0x34、0x35として送信されます。値に必要な2バイト。または列に必要な4バイト? 明確にするために、データを圧縮して保存し、バックアップすることに関するオプションがあることを理解しています。データの送信方法について質問しています。

3
更新(ソフトウェアおよびハードウェア)からの重いI / Oのためにデータベースを最適化する方法
状況 は非常に頻繁に更新されるpostgresql 9.2データベースがあります。したがって、システムはI / Oにバインドされており、現在別のアップグレードを検討しています。改善を開始する場所についての指示が必要です。 過去3か月間の状況の様子を次の図に示します。 ご覧のとおり、更新操作はほとんどのディスク使用率を考慮しています。より詳細な3時間のウィンドウで状況がどのように見えるかの別の写真を次に示します。 ご覧のとおり、ピーク書き込み速度は約20MB / sです ソフトウェア サーバーは、ubuntu 12.04およびpostgresql 9.2を実行しています。更新のタイプは、通常、IDで識別される個々の行で小規模に更新されます。例UPDATE cars SET price=some_price, updated_at = some_time_stamp WHERE id = some_id。可能な限りインデックスを削除して最適化し、サーバー構成(Linuxカーネルとpostgres confの両方)もかなり最適化されています。 ハードウェア ハードウェアは、32GB ECC ram、RAID 10アレイの4x 600GB 15.000 rpm SASディスクを備えた専用サーバーで、BBUとIntel Xeon E3-1245 Quadcoreプロセッサーを搭載したLSI RAIDコントローラーによって制御されます。 ご質問 グラフに表示されるパフォーマンスは、この口径のシステム(読み取り/書き込み)にとって妥当ですか? したがって、ハードウェアのアップグレードに重点を置くか、ソフトウェアの詳細な調査(カーネルの調整、confs、クエリなど)を行う必要がありますか? ハードウェアのアップグレードを行う場合、ディスクの数はパフォーマンスにとって重要ですか? - - - - - - - - …

2
MySQL:ツリー階層クエリ
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 7年前に移行され ました。 MySQLのツリー内のサブツリー 私のMYSQL Database COMPANYでは、Table: Employee再帰的な関連付けがあり、従業員は他の従業員の上司になることができます。A self relationship of kind (SuperVisor (1)- SuperVisee (∞) )。 テーブルを作成するクエリ: CREATE TABLE IF NOT EXISTS `Employee` ( `SSN` varchar(64) NOT NULL, `Name` varchar(64) DEFAULT NULL, `Designation` varchar(128) NOT NULL, `MSSN` varchar(64) NOT NULL, PRIMARY KEY (`SSN`), CONSTRAINT `FK_Manager_Employee` FOREIGN KEY …

1
既存のdatadirパスを変更する
ファイルのdatadirパスを変更したいmy.ini。 既存のdatadirパスはC:/ProgramData/MySQL/MySQL Server 5.1/Data/ C:ドライブのサイズは30 GBで、MySQLデータフォルダーは25 GBを占有しています。に変更datadirしF:/naveen/dataます。 これは可能ですか? 私のマシンはWindows Server 2003を実行しています。

4
データベースが3番目の正規形に正規化されているかどうかを確認するツールはありますか?
最近、正規化について学び、新しいスキーマを実装するときにそれがどれほど重要かを理解しました。 データベースが2NFまたは3NFに準拠しているかどうかを確認するにはどうすればよいですか? 手動レビューは確かなオプションですが、ここでは自動化されたツールを探しています。 私は、ポイントアンドクリックツールを探しているのではなく、テーブル3NFを準拠させるために可能な最適化を強調するものを探しています。良いサンプルデータやカラム名のセマンティック分析に基づいた統計を使用するかもしれないと思います。


2
更新する行の数に応じて完全に異なるプランを使用するT-SQLクエリ
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 7年前に移行され ました。 「TOP(X)」句を含むSQL UPDATEステートメントがあり、値を更新する行には約40億行あります。「TOP(10)」を使用すると、ほぼ瞬時に実行される1つの実行プランが得られますが、「TOP(50)」以上を使用すると、クエリは(少なくとも、待機中ではなく)終了しません。まったく異なる実行計画を使用します。小さいクエリは、インデックスシークとネストされたループ結合のペアを持つ非常に単純なプランを使用します。まったく同じクエリ(UPDATEステートメントのTOP句の行数が異なる)は、2つの異なるインデックスシークを含むプランを使用します、テーブルスプール、並列処理、その他多数の複雑さ。 「OPTION(USE PLAN ...)」を使用して、より小さいクエリによって生成された実行プランを強制的に使用しました。これを行うと、数秒で100,000行も更新できます。クエリプランが良好であることはわかっていますが、SQL Serverは少数の行のみが関係している場合にのみそのプランを選択します。更新でかなり多くの行数があると、最適ではないプランになります。 並列処理のせいかもしれないと思ったのでMAXDOP 1、クエリを設定しましたが、効果はありません-そのステップはなくなりましたが、選択/パフォーマンスの低下はありません。sp_updatestatsそれが原因ではないことを確認するために、今朝も走りました。 2つの実行計画を添付しました-短いものは速いものです。さらに、問題のクエリは次のとおりです(含まれているSELECTが小さい行カウントと大きい行カウントの両方の場合に高速であるように見えることに注意する価値があります)。 update top (10000) FactSubscriberUsage3 set AccountID = sma.CustomerID --select top 50 f.AccountID, sma.CustomerID from FactSubscriberUsage3 f join dimTime t on f.TimeID = t.TimeID join #mac sma on f.macid = sma.macid and t.TimeValue between sma.StartDate and sma.enddate …

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