データベース管理者

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

4
この時点で接続できる管理者は1人だけです(MS SQL Serverエラー18461)
SQL Serverに少量のメモリを与えた場合の効果を実験していましたが、回復すると思っていました。 SQL Serverを起動して200 MBのメモリを使用するように構成しました。インターネットでいくつか検索を行い、SQL Serverをシングルユーザーモードで起動するように勧められました。ただし、エラーが発生します ユーザーAのログインに失敗しました。理由:サーバーはシングルユーザーモードです。この時点で接続できる管理者は1人だけです(Microsoft SQL Server、エラー:18461) SQL Serverエージェントを停止しました。
14 sql-server 

1
Postgresからの非ASCII行のクエリ
い[:ascii:]クラスの仕事は、すべてのPostgresの中で?彼らのヘルプにはリストされていませんが、それを利用するウェブの例を見ることができます。 UTF-8データベースがあり、照合とc_typ eはen_US.UTF-8であり、Postgresバージョンは9.6.2です。このように非ASCII行を検索すると: select title from wallabag_entry where title ~ '[^[:ascii:]]'; Unicodeシンボルと非Unicodeシンボルの両方を取得します(完全な出力はこちら)。 Сталинская правозащитница: мать Меленкова бабушка Настя Дневник НКВДиста Шабалина: Знает ли Москва положение на фронте? Бег по городу и поездка на осле: как в средневековье наказывали прелюбодеев Как комиссар Крекшин в 1740-е чуть не отменил историю России Have …

2
多数の重複値で使用するインデックスは何ですか?
いくつかの仮定をしてみましょう。 次のような表があります。 a | b ---+--- a | -1 a | 17 ... a | 21 c | 17 c | -3 ... c | 22 私のセットに関する事実: テーブル全体のサイズは〜10 10行です。 私は値で〜100kの行を持ってa列内のa他の値(例えばについても同様、c)。 これは、列 'a'に〜100k個の異なる値があることを意味します。 私のクエリのほとんどは、aの特定の値のすべてまたはほとんどの値を読み取りますselect sum(b) from t where a = 'c'。 テーブルは、連続した値が物理的に近くなるように記述されます(順番に記述されているかCLUSTER、そのテーブルと列で使用されていると仮定しますa)。 テーブルが更新されることはめったにありません。読み取り速度のみが重要です。 テーブルは比較的狭い(タプルごとに〜25バイト、+ 23バイトのオーバーヘッドなど)。 問題は、どのようなインデックスを使用する必要があるかということです。私の理解は: BTreeここでの私の問題は、BTreeインデックスが重複する値を格納することを知っている限り、巨大になることです(テーブルが物理的にソートされていると想定できないため、必要です)。BTreeが巨大な場合、インデックスとインデックスが指すテーブルの部分の両方を読み取る必要があります。(fillfactor = 100インデックスのサイズを少し小さくするために使用できます。) BRIN私の理解では、役に立たないページを読むことを犠牲にして、ここに小さなインデックスを作成できるということです。小さな値を使用pages_per_rangeすると、インデックスが大きくなり(インデックス全体を読み取る必要があるためBRINで問題になります)、大きな値を使用pages_per_rangeすると、多くの無駄なページを読み取ることになります。pages_per_rangeそれらのトレードオフを考慮に入れた優れた価値を見つけるための魔法の公式はありますか? GIN …

2
CTE内から呼び出されたときにPostgreSQL関数が実行されない
私の観察を確認し、なぜこれが起こっているのかについて説明を得たいと思っています。 私は次のように定義された関数を持っています: CREATE OR REPLACE FUNCTION "public"."__post_users_id_coin" ("coins" integer, "userid" integer) RETURNS TABLE (id integer) AS ' UPDATE users SET coin = coin + coins WHERE userid = users.id RETURNING users.id' LANGUAGE "sql" COST 100 ROWS 1000 VOLATILE RETURNS NULL ON NULL INPUT SECURITY INVOKER CTEからこの関数を呼び出すと、SQLコマンドは実行されますが、関数はトリガーされません。次に例を示します。 WITH test AS (SELECT …
14 postgresql  cte 

2
統合テスト用のSQL Serverデータベーススナップショット
統合テストのために(SQL Serverの)テストデータベースを操作する方法を定義しようとしています。 私のアイデアは、統合テストアセンブリの起動時に次の手順を実行することでした。 完全に空のデータベースを作成する 「データベースオブジェクトの作成」スクリプトを実行して、関連するすべてのデータベースオブジェクト(テーブル、ビュー、シーケンスなど)を作成します。 「ベースデータ」を入力します(ルックアップ値など) (db)_Basis将来の統合テストのために「ベースライン」と呼ばれるデータベースのスナップショットを撮る すべてのテストクラス(1-nテストを含む)の前に、「スナップショットからの復元」を実行して、データベースの定義済みの多かれ少なかれ「空の」状態に戻すことを計画していました。これまでのところ魅力のように動作します。 ただし、大規模なテストデータベースで動作する必要がある統合テストのセットがあります。そのため、これらの各テストフィクスチャ(n個の個別テストを持つクラス)の前にこれを実行したいと考えていました。 (db)_Basisスナップショットからデータベースを復元する これらの50'000 +行のデータをデータベースに挿入します 別のスナップ(db)_With_Testdataショットスナップショットを作成する その後、テストごとに、データベースを適切に定義された(db)_With_Testdataスナップショットバージョンにリセットし、テストを実行して、結果を検証します。 問題は、2つの dbスナップショットを同時に持つことができないように思われることです。一度行うと、データベースをどちらにも復元できません。このエラーが引き続き発生します。 メッセージ3137、レベル16、状態4、行9 データベースを元に戻すことはできません。プライマリ名またはスナップショット名が不適切に指定されているか、他のすべてのスナップショットが削除されていないか、ファイルが欠落しています。 メッセージ3013、レベル16、状態1、行9 RESTORE DATABASEが異常終了しています。 SQL Serverデータベースのスナップショットは実際にどのように機能しますか?? ひどく制限しているようです.....おそらく元の「(db)_Basis」スナップショットに直接戻れないかどうかはわかりますが、2つのスナップショットを持っているという理由だけで、最新のスナップショットに戻ることさえできません。 ?!?!?

4
SELECT INTOステートメントの進行
ETLフローには長時間実行されるSELECT INTOステートメントがあり、その場でテーブルを作成し、そのテーブルに数億のレコードを取り込みます。 ステートメントは次のようになります SELECT ... INTO DestTable FROM SrcTable 監視のために、実行中にこのステートメントの進行状況(おおよそ行数、書き込まれたバイト数など)の大まかなアイデアを取得したいと思います。 以下を試してみましたが、役に立ちませんでした。 -- Is blocked by the SELECT INTO statement: select count(*) from DestTable with (nolock) -- Returns 0, 0: select rows, rowmodctr from sysindexes with (nolock) where id = object_id('DestTable') -- Returns 0: select rows from sys.partitions where object_id = …


1
pg_restore中にチェックポイントが頻繁に発生している
PostgreSQL 9.2.2(Windows 32ビット)にはpg_restore、チェックポイントの頻度に関するログ警告を体系的に表示するコマンドがあります。たとえば: LOG: checkpoints are occurring too frequently (17 seconds apart) HINT: Consider increasing the configuration parameter "checkpoint_segments". データベースのサイズは約3.3 Gbで、112テーブル/ 160ビューで、約14分で復元できます。 それが中に発生するのは正常pg_restoreですか?


1
MySQL GRANT PROXY-それはどういう意味ですか?
走る: show grants for root@localhost; なるほど GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION mysql docsから: https://dev.mysql.com/doc/refman/5.5/en/proxy-users.html これにより、外部ユーザーは2番目のユーザーのプロキシになります。つまり、2番目のユーザーの特権を持ちます。つまり、外部ユーザーは「プロキシユーザー」(なりすましまたは別のユーザーとして知られるようになるユーザー)であり、2番目のユーザーは「プロキシユーザー」(IDがプロキシユーザーに引き継がれるユーザー)です。 。 しかし、私はそれらの意味を理解していません。仕事を辞めた別の労働者からシステムを入手しましたが、すべてが安全であり、この許可が必要かどうかわからないことを確認したいと思います。しかし、セキュリティの問題が発生しない場合は、そのままにしておきます。 誰かがもっと簡単に説明できますか? 更新: 別のユーザーとして接続するにはどうすればよいですか?ユーザー名とパスワードのさまざまな組み合わせを試しましたが、接続させることはできません。 たとえば、ユーザーrootを使用しましたが、別のユーザーのパスワードを使用しましたが、機能しませんでした。別のユーザーとルートパスワードを試してみましたが、動作しませんでした。 更新: または、これはおそらくルートユーザーが他のユーザーとして接続できることを意味しますか?もしそうなら、少なくともそれを行う方法?
14 mysql  proxy 

4
Ansible:サーバーを再プロビジョニングしてMySQLサーバーのルートパスワードを変更する方法
サーバーにAnsible Playbookをプロビジョニングしました。root / bedrock-Ansibleプレイブックを使用しました。 タスクの1つは、mysqlサーバーとmysql rootユーザーのパスワードをセットアップすることでした。 今、私は緊急にこのパスワードを変更する必要があります。私が取ったステップ: Ansibleロールの変数を更新しました ansible-playbook -i hosts/staging server.ymlサーバーを再プロビジョニングするためにコマンドを実行しました すべてのタスクは期待どおりに実行されました(変更なし)が、スクリプトは[mariadb | Set root user password]次のメッセージで失敗し ました: msg: unable to connect to database, check login_user and login_password are correct or ~/.my.cnf has the credentials 私の推測では、MySQLルートパスワードが設定されると、サーバーの再プロビジョニングはこのパスワードを変更できません。 Ansibleでサーバーを再プロビジョニングすることで、MySQLルートパスワードを変更することはまったく可能ですか?私のオプションは何ですか?
14 mysql 

1
最適なmysqldump設定は何ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 2年前に閉店。 いくつかの検索の後、私は次の設定になりました: mysqldump\ --host=localhost\ --port=3306\ --databases ****\ --user=****\ --password=****\ --default-character-set=utf8\ --add-drop-database\ --add-drop-table\ --add-locks\ --complete-insert\ --extended-insert\ --lock-all-tables\ --create-options\ --disable-keys\ --quick\ --order-by-primary\ --set-charset\ --tz-utc\ > dump/test.sql これまでのところは良いですが、パラメーターと実行に関していくつか質問があります。 私の最初の懸念については、それらのすべてが必要であり、一緒に使用したときに競合を引き起こさないことを確認したいだけです。最終的に、テーブル、データベースを作成し、データを挿入する、数百万のレコードを持つ非常に堅牢で一貫したダンプファイルを作成したいと思います。良いことは、データベースをしばらく利用できないようにすることは私にとって問題ではないということです。私の唯一の目標は、堅牢で一貫性のあるダンプファイルを作成することです。 2回目のコンサートについては、コマンドが間違った場合に通知を受け取る方法を知りたい場合は例外をスローします。 何か案は? 編集 これは、RolandoMySQLDBAのフィードバックに基づいて更新されたmysqldumpコマンドです。 mysqldump\ --host=localhost\ --port=3306\ --databases ****\ --user=****\ --password=****\ --default-character-set=utf8\ --opt\ --single-transaction\ --routines\ --triggers\ --events\ --add-drop-database\ --add-drop-table\ --complete-insert\ --delayed-insert\ --tz-utc\ …

2
Mongo DBレプリカがRECOVERING状態でスタックする
レプリカセットを作成しましたが、問題はレプリカセットの2メンバー[3メンバーセット]が48時間から復旧モードになっていることです。最初は、回復するノードのサイズが増加していましたが、現在では停止しています。そのため、ノードを復旧する際に、90 GBのデータと60 GBを超えるローカルデータの後にスタックします。 このモードから抜け出す方法は?

2
大規模なMongoDBデータベースをバックアップする方法
MongoDBで大規模なデータセットをバックアップする推奨方法は何ですか?10TBのオーダーのデータサイズがあるとします-どのようにバックアップしますか? 私たちは、隠された、おそらく遅延した、レプリカセットノードを検討しています。遅延は、データベース全体の偶発的なドロップから私たちを保護します。これは実行可能なソリューションですか?調査することをお勧めする他のオプションは何ですか? ありがとう!

2
PostgreSQL:スキーマdiff / patchツール[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、データベース管理者のStack Exchangeのトピックになるようにします。 5年前に閉鎖されました。 次の設定を考慮してください。 実動DB 新しい機能を有効にするためにスキーマの変更が行われるdev db 新しい機能の開発が完了したら、pg_dump --schema-only両方のDBが同一になるまでprod dbスキーマを手動で更新する必要があります。このプロセスはエラーが発生しやすく、面倒です。 だから、私はできるツールを探しています: 2つのスキーマの違いの要約を表示しdiffます(など)。スキーマの単なるテキストの差分を探しているのではなく、「Table Xhas a new column Y」のような結論を導き出すことができるより精巧なツールを探していることに注意してください。 あるスキーマを別のスキーマに変換するSQLコードを自動生成します(などpatch) prodスキーマをより高度なdevスキーマに変換するのに役立つスキーマdiff / パッチツールはありますか?

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