データベース管理者

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

2
MySQLのAWS RDS t1-microでmax_connectionsを増やす必要がありますか?
MySQL 5.5を実行しているAWS RDS t1-microがあります。接続エラーが多すぎます。チェックすると、最大34の同時接続が許可されます。私が読んだことは、このマイクロインスタンスのDBパラメータグループを作成することにより、この最大値を増やすことができるということです。 私の混乱は DBパラメーターグループのマイクロの最大接続値を増やす必要がありますか?または、より多くの最大接続(125)を提供する次のRDSレベルへのアップグレードを検討する必要がありますか? micro RDSのmax_connectionsを125に増やし、RDS smallインスタンスにアップグレードする必要がありますか? なぜ、どのような要因で決定を下す必要がありますか? ありがとう

4
GUIDを主キーとして使用してデータベース設計を修正する最適なソリューション
私は、このアイデアをある程度確認した後、パフォーマンスの悪いデータベースを修正するか、データベースがある場合はより良い提案をします。常により良い提案を受け入れます。 GUIDをPKとして使用している非常に大規模なデータベース(1日あたり約20万件増加する2000万件以上のレコード)があります。 私の側の見落としですが、PKはSQLサーバーにクラスター化されており、パフォーマンスの問題を引き起こしています。 GUIDの理由-このデータベースは他の150個のデータベースと部分的に同期されているため、PKは一意である必要がありました。同期はSQL Serverによって管理されるのではなく、システムの要件に合わせてデータの同期を維持するカスタムプロセスが構築され、すべてがそのGUIDに基づいています。 150のリモートデータベースのそれぞれは、中央のSQLデータベースに格納されているような完全なデータを格納しません。実際に必要なデータのサブセットのみを保存し、必要なデータはそれらに固有ではありません(150のデータベースのうち10が他のサイトデータベースからの同じレコードの一部を持っている場合があります-それらは共有しています)。また、データは実際には中央サイトではなくリモートサイトで生成されるため、GUIDが必要です。 中央データベースは、すべての同期を維持するためだけでなく、3000以上のユーザーからのクエリがその非常に大きな断片化されたデータベースに対して実行されます。すでにこれは初期テストの大きな問題です。 幸いなことに、私たちはまだ生きていません。必要に応じて変更を加えてオフラインにすることができます。これは少なくとも何かです。 リモートデータベースのパフォーマンスは問題ではありません。データサブセットは非常に小さく、通常、データベースの合計サイズが1GBを超えることはありません。レコードはメインシステムに非常に定期的にフィードバックされ、不要になったときに小さいBDから削除されます。 すべてのレコードのキーパーである中央DBのパフォーマンスは、その多くのレコードの主キーとしてのクラスター化されたGUIDのために悲惨です。インデックスの断片化はチャートから外れています。 だから-パフォーマンスの問題を修正するための私の考えは、新しい列を作成することです-符号なしBIGINT IDENTITY(1,1)し、テーブルBIGINT列のクラスターPKを変更します。 主キーであるGUIDフィールドに一意の非クラスター化インデックスを作成します。 小規模なリモート150データベースは、Central SQL Serverデータベースの新しいPKについて知る必要はありません。これは、データベース内のデータを整理し、パフォーマンスの低下と断片化を防ぐために純粋に使用されます。 これは機能し、中央のSQLデータベースのパフォーマンスを向上させ、将来のインデックスの断片化を防ぎます(もちろん)。または、ここで非常に重要な何かを見逃したことがあります。

1
PostgreSQLでテーブルの照合を決定する方法は?
PostgreSQLのテーブルで使用されている照合のチェックをスクリプト化したいのですが、グーグル検索Postgresql detect collationがうまく機能しておらず、ドキュメントでは簡単に検索できません。 誰が私にこれを確認する方法を教えてもらえますか?

2
SQL Serverで列をintに更新するときにトランザクションログがいっぱいになるのを回避する方法
というSQL Server 2005テーブルBRITTNEY_SPEARS_MARRIAGESがあり、次の列があります。 MarrigeId tinyint, HusbandName varchar(500), MarrigeLength int 今、私は別のテーブルを持っています BRITTNEY_SPEARS_MARRIAGE_STORIES StoryId int, MarriageId tinyint, StoryText nvarchar(max) 問題は、私たちが更新したいですMarrigeIdに列をintからtinyint。私たちは、ブリトニーがすべてのことを言って成し遂げる前にたくさんの結婚をするだろうと感じています。 現在、BRITTNEY_SPEARS_MARRIAGE_STORIESテーブルには1800万行があり(女の子に問題があるので)、更新を行うとトランザクションログがいっぱいになり、SQL Serverボックスが停止します。 どうすればこれを回避できますか? とにかく「SQL Serverをこの列を更新して大きくします。このSQL Serverで信頼してください。すべての検証を試みている間、トランザクションログをいっぱいにしないでください」と言うことはできますか?

4
データベース設計:「アーカイブ」問題の処理方法
多くのアプリケーション、重要なアプリケーション、銀行などがこれを日常的に行っていると確信しています。 すべての背後にある考え方は次のとおりです。 すべての行に履歴が必要です すべてのリンクは一貫性を保つ必要があります 「現在の」列を取得する要求を簡単に行う必要があります 陳腐化したものを購入したクライアントは、この製品がカタログの一部ではなくなっても、購入したものを見る必要があります。 等々。 これが私がやりたいことであり、私が直面している問題を説明します。 すべてのテーブルにこれらの列があります。 id id_origin date of creation start date of validity start end of validity また、CRUD操作のアイデアは次のとおりです。 create = id_origin= id、date of creation= now、start date of validity= now、end date of validity= nullで新しい行を挿入します(=は現在のアクティブなレコードであることを意味します) 更新= read = = end date of validitynullですべてのレコードを読み取ります 「現在の」レコードend date of validity= …

2
SQL Server Join / where処理順序
Slow SQLクエリを読んだ後、最適化の方法がわからないので、クエリの一般的なパフォーマンスについて考えるようになりました。クエリをわずかに高速化するために、結合する前に(他のテーブルを結合する場合)最初のテーブルの結果をできるだけ小さくする必要があります(この質問の内部結合)。 例、これが必要です: SELECT * FROM ( SELECT * FROM table1 WHERE col = @val ) t INNER JOIN table2 ON col = col2 以下より良く/速くなる SELECT * FROM table1 INNER JOIN table2 ON col = col2 WHERE table1.col = @val 私の理論は次のとおりです(これは正しい実装ではないかもしれません。私が読んだSQL Server 2008の内部の本(MSFT Press)から思い出そうとしています)。 クエリプロセッサは最初に左側のテーブル(table1)を取得します 2番目のテーブル(table2)を結合し、必要な行をフィルタリングする前にデカルト積を形成します(該当する場合) 次に、SEELCTステートメントを使用してWHERE、ORDER BY、GROUP BY、HAVING句を最後に実行します。 したがって、上記のステートメント#1でテーブルが小さい場合、SQLエンジンはデカルト積を形成するときに行う作業が少なくなります。その後、whereステートメントに到達すると、メモリ内でフィルタリングする結果セットが減少します。 …


2
WITH CHECK CHECK CONSTRAINTとは何ですか?
おそらく自動生成されたT-SQLがいくつかありますが、これはおそらく有効ですが、実際にはわかりません。 ALTER TABLE [dbo].[MyTable] WITH CHECK CHECK CONSTRAINT [My_FORIEGN_KEY]; 私は外部キー制約が何であるか知っていますが、何CHECK CHECKですか?

3
MySQLでマテリアライズドビューを作成する最良の方法
MySQL 5.6を使用しています。Oracleのようにマテリアライズドビューを作成することはできません。Flexviewのような1つまたは2つのソリューションを見てきました。 MySQLでマテリアライズドビュー(Oracleのような自動更新)を最小限の複雑さで作成する最良の方法を教えていただけますか?

2
リーフページと非リーフページの違いは何ですか?
私はいくつかのインデックス使用レポートを実行していますが、LeafとNon-leafの定義を取得しようとしています。リーフと非リーフの両方の挿入、更新、削除、ページ結合、ページ割り当てがあるようです。私は本当にそれが何を意味するのか、または一方が他方よりも優れているかどうかを知りません。 誰かがそれぞれの簡単な定義を提供し、リーフまたは非リーフが重要である理由を説明できれば、それはありがたいです!


2
PostgreSQLビット文字列を使用する必要がありますか?
私はbit string最近データ型について学んでおり、私は非常に興味があります: このドキュメントページの下部に次の文があります。 ...プラス文字列の長さに応じて5または8バイトのオーバーヘッド PHP、Java、C#、C ++などの他の言語では、Npgsql、ODBCなどのドライバーを介して、ビット文字列はどのように処理されますか。 質問1では、smallintまたはbigintを使用すると、ストレージの効率が大幅に向上し、整数はどこでもサポートされるため、パフォーマンスが向上する可能性があります。ほとんどのプログラミング言語は、整数のビット操作を簡単に処理します。その場合、ビット文字列データ型を導入するポイントは何ですか?大量のビットマスクが必要な場合のみですか?多分ビットフィールドのインデックス?PostgreSQLでビットフィールドのインデックス付けがどのように行われるかについて、もっと興味があります。 #2については、私は混乱しています。たとえば、平日ビットマスクをbit(7)フィールドに格納すると、1日1ビットで、最下位ビットが月曜日を表します。次に、PHPとC ++で値を照会します。私は何を得ますか?ドキュメントには、ビット文字列があると書かれていますが、ビット文字列は整数のように直接使用できるものではありません。この場合、ビットフィールドを放棄する必要がありますか? 誰かがビットまたはビット可変を使用する理由とタイミングを詳しく説明できますか?
18 postgresql 

4
1回の選択で現在の値と次に大きい値を取得するにはどうすればよいですか?
InnoDBテーブル 'idtimes'(MySQL 5.0.22-log)に列があります `id` int(11) NOT NULL, `time` int(20) NOT NULL, [...] 複合一意キー UNIQUE KEY `id_time` (`id`,`time`) そのため、IDごとに複数のタイムスタンプがあり、タイムスタンプごとに複数のIDがあります。 私はすべてのエントリに加えて、存在する場合は各エントリの次の大きな時間を取得するクエリを設定しようとしているので、たとえば次のように返されます: +-----+------------+------------+ | id | time | nexttime | +-----+------------+------------+ | 155 | 1300000000 | 1311111111 | | 155 | 1311111111 | 1322222222 | | 155 | 1322222222 | NULL | | …
18 mysql  innodb  select 

1
クラスター化列ストアの非クラスター化インデックスストレージ
SQL Serverでは、行ストアテーブルの一意でない非クラスター化インデックスに、非クラスター化インデックス構造のすべてのレベルでベースオブジェクトのブックマーク(RIDまたはクラスター化キー)が組み込まれます。ブックマークは、すべてのインデックスレベルで非クラスター化インデックスキーの一部として保存されます。 一方、非クラスター化インデックスが一意である場合、ブックマークはキーの一部としてではなく、インデックスのリーフレベルにのみ存在します(実際には、ブックマークは1つ以上の含まれる列として存在します)。 SQL Server 2016では、列指向のテーブル(クラスター化された列ストアインデックスを持つテーブル)に非クラスター化Bツリーインデックスを構築できます。 クラスター化された列ストアテーブルの非クラスター化Bツリーインデックスに使用される「ブックマーク」とは何ですか? 上記の一意および非一意の非クラスタ化インデックスの違いは引き続き適用されますか?

2
スマイリーフェイスをMySQLに挿入する方法(()
私はMySQL 5.5.21を使用しており、「\ xF0 \ x9F \ x98 \ x8A」のスマイリーフェイス文字を挿入しようとしています。しかし、私の人生では、どうすればいいのかわかりません。 私が読んでいるさまざまなフォーラムによると、それは可能です。しかし、私がそれを試みるたびに、データは切り捨てられます。 mysql> INSERT INTO hour ( `title`, `content`, `guid` , `published` , `lang` , `type` , `indegree` , `lon` , `lat` , `state` , `country` , `hour` ) VALUES ( "title" , "content 😊 content" , "guid" , 1, 1, "WEBLOG", …

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