データベース管理者

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


2
GISデータ用のPostGISとSQL Server
だから私は最近新しい会社に着手し、顧客にデータを提供するためにPostGISインスタンスを進めたいと強く思っている多くのArcGISユーザーがいます。これについては問題ありませんが、私たちは95%がSQL Server、5%がOracleショップです。現在の内部GISはSQL Serverで実行されており、苦情はまだ聞いていません。 2012年の時点で、SQL Serverの空間/幾何学的機能が大幅に改善されていることは知っていますが、新しいプラットフォームに侵入する価値のあるPostGISのキラー機能はありますか?私はそれを研究しようとしましたが、真に詳細なものを見つけることができません、またはそれは完全に偏っていません。 私は彼らに彼らの仕事を成し遂げるための最高のツールを提供したいだけでなく、私が最初からPostgres / GISを学び、それがそれ自体の全体の旅であるという事実を考慮しなければなりません。

3
最も効率的なUUID列タイプは何ですか
128ビットUUIDを保存するには、複数の保存オプションがあります。 byte [16]列 2つのbigint / long(64ビット)列 CHAR(36)列-32桁の16進数+ 4つのダッシュ。 dbがサポートしている場合、UUIDデータベース固有の列 インデックスの観点から、どれが最も効率的ですか?データベースが専用のuuidタイプをサポートしていない場合、1、2、3のうちどれが最適な候補ですか?

2
psql:致命的:申し訳ありませんが、すでにクライアントが多すぎます
postgresqlデータベースを使用するWebサイトにアクセスしようとしたとき、またはpsqlユーティリティまたはpgadmin3を使用しているときでも、突然このエラーが発生します。 私のデータベースは、最大150の接続を処理するように設定されています。 # SHOW max_connections; max_connections ----------------- 150 (1 row) 私のウェブサイトがオンになっているubuntuサーバーを再起動すると(実際に接続を使用しているのはこれだけです)、現在の接続量は140です: # select count(*) from pg_stat_activity; count ------- 140 (1 row) サーバーを再起動した後、どれだけ突然接続が急増したのかわかりません。だから私はpostgresqlアクティビティをチェックします: # SELECT * FROM pg_stat_activity; そして、次のようなまったく同じクエリを持つ100を超える列が表示されます。 SELECT "reports".* FROM "reports" WHERE (("reports"."time" < '2014-06-28 13:30:42.000000' AND "reports"."unit_id" = 3192)) ORDER BY "reports"."id" DESC LIMIT 1 さらに重要なのは、それらがすべて同じクライアントアドレス(私のWebサーバー)を持っていることです。 このWebサーバーは、接続プールが50のRails on …

1
ibdファイルからibdata1なしでデータフォルダからMySQLデータベースを回復します
WAMPディレクトリが誤って別のユーザーによって削除されます。MySQLのデータフォルダのみが使用可能です。また、データベースフォルダー( "\ bin \ mysql \ mysql5.6.12 \ data \"内のフォルダーとデータベース名)のみが使用可能です。「\ bin \ mysql \ mysql5.6.12 \ data \」のルートにある「ibdata1」を含むすべてのファイルも削除されます。 データベースフォルダーには、以下の拡張子を持つファイルのみが含まれます。 * .frm、*。ibd および「db.opt」ファイル。 データベースをどのように回復できますか? 私はすでにbdata1を回復しようとしました。しかし、それを取り戻すことができません。また、一部のデータベースにはMYISAMも含まれています。

2
1日あたりのMySQLクエリの決定方法
私はMySQLからNoSQL DBaaSへの大きな切り替えを調査しており、費用を予測しようとする問題に遭遇しました。本質的に、Cloudantで使用するリクエストの数を試して推定するために、現在のMySQLサーバーが1日に処理するクエリの数を把握することはできません。とHEADs。 SHOW STATUSおよびSHOW GLOBAL STATUSを使用して、MySQLがそれ自体で収集する統計を取得することに関する多くの情報を見つけましたが、時間枠の参照はありません。 たとえば、SHOW GLOBAL STATUSは次を返します。 Queries | 13576675 これは素晴らしいことです。ただし、その数値をラップする時間枠がわからないという点が異なります。1300万件のクエリ 月ごと?年?時間の始まりから? MySQLのドキュメントはあまり詳しく説明していません。 問い合わせ サーバーによって実行されたステートメントの数。この変数には、Questions変数とは異なり、ストアドプログラム内で実行されるステートメントが含まれます。COM_PINGまたはCOM_STATISTICSコマンドはカウントしません。この変数はMySQL 5.0.76で追加されました。 助けてくれてありがとう。
15 mysql 

3
SQL ServerでUNIQUEIDENTIFIERを安全に生成する
UNIQUEIDENTIFIERユーザーが特定のデータにアクセスするために使用できるアクセスキーとしてを使用する予定です。その意味で、キーはパスワードとして機能します。 INSERT...SELECTステートメントの一部として、このような識別子を複数生成する必要があります。アーキテクチャ上の理由から、この場合はサーバー側で識別子を生成します。 安全にランダムに生成するにはどうすればよいUNIQUEIDENTIFIERですか?NEWIDセキュリティプロパティがまったく保証されないため、これは十分にランダムではないことに注意してください。推測できないIDが必要なため、SQL ServerのSystem.Security.Cryptography.RandomNumberGeneratorに相当するものを探しています。に基づくものCHECKSUM、RANDまたはGETUTCDATE資格がないもの。

2
DDLが切り捨てられるのはなぜですか?
インタビューの質問があります。これはインタビューの中で尋ねられました。私は質問に答えましたが、インタビュアーは私の答えにそれほど納得していませんでした。だから、誰でも私の理解で私を修正してください? Q. TruncateがDDLであり、DeleteがDMLである理由 両方ともほぼ同じジョブを実行します(行を削除します) 回答 Truncateを使用している場合、undo-table-spaceに保存せずに、データによって割り当てられたスペース全体の割り当てを解除しています。ただし、削除の場合、すべてのデータをUNDO表スペースに入れてから、すべてのデータを削除します。 上記のベストアンサーを知っている人がいたら、説明してください。
15 oracle  delete  ddl  truncate 

2
リモートPostgresテーブルをローカルマシンのCSVファイルにエクスポートする
リモートサーバー上のデータベースへの読み取り専用アクセス権があります。だから、私は実行することができます: COPY products TO '/tmp/products.csv' DELIMITER ','; しかし、そのサーバーにはファイルを作成/保存する権限がないため、ローカルマシンでこれを行う必要があります。 リモートデータベースに接続するときに、リモートサーバーではなくローカルマシンにファイルを保存するコマンドを実行するにはどうすればよいですか? または、Linuxコマンドを実行してリモートデータベースに接続し、クエリを実行し、出力をファイルとしてローカルマシンに保存するにはどうすればよいですか?
15 postgresql  export  csv  copy 

1
mysqlのiblogファイルとは何ですか
これらのibdataファイルは、クラッシュリカバリ手順で重要な役割を果たすため、理解したいと思います。このための適切なリソースをウェブ上で見つけることができませんでした。
15 mysql  innodb  logs 

1
単一のデータベースに対する一括挿入権限
私はまっすぐなITセキュリティマナーを持つ会社で働いています。私たちのチームのいくつかのプロセスを最適化するために、データベースアナリストとして雇われました。問題は、読み取りと書き込みのアクセス許可しか持っていないことと、データベースの高度なアクセス許可を取得しようとしています。現在、単一のサーバーに多数のデータベースがあり、単一のデータベースでのみ作業BULK INSERTできます。許可を単一のデータベースに与えることができるのか、それともサーバー全体に許可するのか疑問に思いました。 これについてウェブで検索しましたが、少し混乱しました。これは私が見つけたものです。BULK INSERTを使用INSERTするには、目的のテーブルまたはデータベースへのアクセス許可が必要ADMINISTER BULK OPERATIONSです。これはサーバー全体のアクセス許可です。ADMINISTER BULK OPERATIONSデータベース全体に対するINSERTアクセス許可と単一のデータベースに対するアクセス許可が与えられた場合、他のデータベースに対するアクセス許可BULK INSERTがないため、その単一のデータベースでのみINSERTアクセスできませんか? BULK INSERT複数のデータベースを持つサーバー上の単一のデータベースへの使用を制限することは可能ですか? テキストの壁についてすみません、ありがとう!

1
PostgreSQLでaes-encryptionを使用する方法は?
次のステートメントを使用してaes暗号化を試みました。 SELECT encrypt('test', 'key', 'aes'); うまくいきましたが、値を解読できません。それをデータ型byteaのフィールドに挿入しましたが、それが正しい方法であったかどうかはわかりません。 SELECT decrypt(pw, 'key', 'aes') FROM table WHERE ID = 1; 私にエラーを与えます エラー:関数decrypt(bytea、unknown、unknown)は存在しません LINE 1:SELECT decrypt(pw、 'key'、 'aes')FROM tabelle WHERE ID = 7; ^ ヒント:指定された名前と引数のタイプに一致する関数はありません。明示的な型キャストを追加する必要がある場合があります。 つまり、encrypt()は既存の関数であり、decrypt()ではないということですか?aesで暗号化された値を他にどのように取得できますか?

2
SQL Server Decimal(9、0)vs INT
顧客の1人がDECIMAL(18,0)、SQL Server 2008R2データベースのデータ型を一部の列に使用しています。列の成長が非常に遅いため、彼は最近、データ型を変更してDECIMAL(5,0)ストレージを回復することを提案しました。 MSDNライブラリによると、DECIMAL(5,0)データ型の記憶領域は、データ型と同様DECIMAL(9,0)に5バイトです。INT1バイト小さくなりますが、格納できる-99,999〜99,999の代わりに-2 ^ 31〜2 ^ 31の範囲ですべてをDECIMAL(5,0)格納できます。DECIMAL5バイト(DECIMAL(9,0))に収まる最大サイズでも、-999,999,999から999,999,999の範囲の整数のみを格納できます(INT4バイトで提供される範囲の半分未満です)。 DECIMALover を使用することの2つの「メリット」を考えることができますINT。 後でストレージ容量を使用せずにスケールを追加する機能 データ型を変更せずに、38桁まで精度をスケーリングする機能 しかし、これらは私の意見では本当の利点ではありません: 整数へのスケールの追加は、ごくわずかな場合にのみ意味があります(スケールが違いを生むほとんどの場合、事前に追加することもできます) SQL Serverは、すべての精度/スケールの組み合わせを異なるデータ型と見なします。そのため、精度またはスケールを増やしても、データ型はそのままではありません。 これは私に疑問を抱かせます:DECIMAL(5,0)整数のデータ型の追加の利点は何ですか?


1
SQL ServerのShowplan XMLの解釈
サイトhttp://sqlfiddle.comに、ユーザーがクエリの未加工の実行計画を表示できる機能を展開しました。PostgreSQL、MySQL、および(ある程度)Oracleの場合、生の実行計画の出力を見ると理解できるように見えます。ただし、SQL Server(で生成されたSET SHOWPLAN_XML ON)の実行計画の出力を見ると、比較的単純なクエリであっても、大量のXMLが処理されます。次に例を示します(この「フィドル」の最後のクエリの実行計画から取得:http ://sqlfiddle.com/#!3/ 1fa93/1): <ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.1" Build="10.50.2500.0"> <BatchSequence> <Batch> <Statements> <StmtSimple StatementText="
select * from supportContacts" StatementId="1" StatementCompId="1" StatementType="SELECT" StatementSubTreeCost="0.0032853" StatementEstRows="3" StatementOptmLevel="TRIVIAL" QueryHash="0x498D13A3874D9B6E" QueryPlanHash="0xD5DDBD3C2D195E96"> <StatementSetOptions QUOTED_IDENTIFIER="true" ARITHABORT="false" CONCAT_NULL_YIELDS_NULL="true" ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" NUMERIC_ROUNDABORT="false"/> <QueryPlan CachedPlanSize="16" CompileTime="0" CompileCPU="0" CompileMemory="72"> <RelOp NodeId="0" PhysicalOp="Clustered Index Scan" LogicalOp="Clustered Index Scan" EstimateRows="3" EstimateIO="0.003125" EstimateCPU="0.0001603" …

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