SqlServer应用系统性能优化设计
本文转载自:http://wenku.baidu.com/view/4b1f67d97f1922791688e801.html 在用SQLServer进行 系统 设计 时,正确、合理地 设计 数据库、索引、查询、选择合适的数据类型、 优化 SQL语句等可以达到提高 系统 性能 的目的。本文讨论 应用 系统 性能 优化 的方
本文转载自:http://wenku.baidu.com/view/4b1f67d97f1922791688e801.html
在用SQLServer进行系统设计时,正确、合理地设计数据库、索引、查询、选择合适的数据类型、优化SQL语句等可以达到提高系统性能的目的。本文讨论应用系统性能优化的方法,并且给出一些有益的建议。
数据库应用系统设计应包含两方面的内容:一是结构设计,也就是设计数据库框架或数据库结构;二是行为设计,即设计应用程序、事务处理等。
1 数据库设计
要在良好的SQL Server 方案中实现最优的性能,最关键的是要有一个很好的数据库设计方案。在实际工作中,许多SQL Server 方案往往是由于数据库设计得不好导致性能很差。合理的数据库设计是提高总体性能的最有效途径。
在设计数据库时应考虑的问题
① 应用程序的性能需求。设计数据库时必须利用SQL Server 中能够提高性能的功能。对于性能而言,在数据库大小和硬件配置之间权衡是很重要的。
② 要综合考虑用窄表还是用长数据表。用多的、有相互关系的窄表来代替很多列的长数据表,可以使排序和建立索引更为迅速。由于表窄,每个表中可以有少一些的索引,因此可以提高Insert 、Update 、Delete 等的速度,因为这些操作在索引多的清况下会对系统性能产生很大的影响。但表多会增加在获取数据时引用表的数目和其间的连接关系的复杂性,太多的表和复杂的连接关系会降低服务器的性能,因此在这两者之间需要综合考虑。
③ 正确合理地选择数据类型。在SQL Server 中数据是必不可少的,对每一属性选择什么样的数据类型很大程度上依据表的要求,但是在不违背表要求的前提下,选择适当的数据类型可以提高系统性能。与每个表列相关的数据类型应该反映数据所需的最小存储空间,对只含数值信息的字段尽量使用数字型,不要设计为字符型,这可提高查询和连接的性能。这是因为引擎在处理查询和连接时对于数字型只需要比较一次,而对字符型会逐个比较字符串中每一个字符。能使用smallint类型就不要用integer 类型,这样索引字段可以被更快地读取,而且可以在1个数据页上放置更多的数据行,因而也就减少了I/O操作。如果一个列内所有值的长度相差较大应尽可能的使用varchar / nvarchar 代替char / nchar ,因为变长字段存储空间小,可以节省存储空间,另外对于查询来说,在一个相对较小的字段内搜索效率显然要高些。如果一个列内所有值的长度都相同或者值的长度相差不大,使用固定长度列更高效。
2 应用程序设计
数据库应用系统设计优化一个重要的方面就是应用程序的优化。应用程序设计在决定使用SQL Server 的系统的性能方面起关键作用。下面给出一些基本的开发技巧和相关技术。
① 消除过多的网络流量。客户端和SQL Server 之间的网络往返通常是影响数据库应用程序性能的首要原因,甚至超过了服务器和客户端之间传送的数据量这一因素的影响。在设计应用程序时应筛选数据,尽可能地减少从远程数据源获取不必要的数据,将网络流量减到最小。
② 使用存储过程。使用存储过程可以极大地提高运行效率,可以独立于应用程序而对存储过程进行修改,可以设置用户通过存储过程对某些数据进行访问,并进行有限制的操作,从而保证表中数据的安全性。③ 使用SET Nocount 会话设置。如果存储过程中有多个语句,则默认清况下,SQL Server 在每个语句完成时给客户端应用程序发送一条消息,详细说明每个语句所影响的行数。如果确信应用程序不需要时,可使用SET Nocount 会话设置为应用程序禁用这些消息,由于该设置大量减少了网终流量,因此可显著提高性能。
④ 使用适中的结果集。检索没必要大的结果集并在客户端浏览将增加CPU和网络I/O的负载,使应用程序的远程使用能力降低并限制多用户可伸缩性。最好将应用程序设计为提示用户输入足够的信息,以便查询提交后生成大小适中的结果集。
⑤ 用批处理方式发送语句。为了提高程序的执行效率,在T-Sql语言编写的程序中,可以使用Go 语句将多条Sql 语句进行分隔,两个Go 之间的Sql 语句作为一个批处理。从应用程序一次性地发送到Sql server 服务器进行执行,加快了程序的传递和执行速度。
⑥ 系统的可扩充性。在设计时必须充分考虑到系统的可扩充性,使设计易于变动。一个设计优良的数据库系统应该具有一定的可伸缩性,应用环境的改变和新需求的出现一般不会推翻原设计,不会对现有的应用程序和数据造成大的影响,而只是在原设计基础上做一些扩充即可满足新的要求。
3 索引查询设计
设计索引和查询对于在SqlServer上取得良好的性能是十分重要的。
31 索引设计与优化
有效地设计索引可以提高性能。常用的索引主要分为聚集索引和非聚集索引。聚集索引保证数据库表中记录的物理顺序与索引顺序相同,检索效率比普通索引要高,但对数据增加、修改、删除的影响较大,因此聚集索引适合于固定表。非聚集索引不会影响数据表中记录的实际存储顺序、比聚集索引需要较少的存储空间,检索效率比聚集索引低,但对数据增加、修改删除的影响很小,适合于数据经常变更的表。在设计过程中,要根据查询设计准则,以查询的优化特点为基础设计素引,在设计索引时应考虑:① 使用窄的索引。比较窄的索引具有比较高的效率,对于比较窄的索引,在每页上将会有更多的索引行和更少的索引级别(相对于多索引和复合索引而言), 所以,缓存中能放置更多的索引页,这样也减少了I/O操作。
② 不要对经常被更新的列建立索引,否则会严重影响性能。
③ 不要对记录数目很少的表建立索引。对小型表进行索引可能不会产生优化效果。
④ 只对经常用来检索的字段建立索引。索引并不是越多越好,因为索引本身要占用一定的存储空间,而且当增加或更新数据时,数据库需要执行额外的操作来维护索引,这些操作在索引多的清况下会对系统性能产生很大的影响。在设计和创建索引时,应确保对性能的提高程度大于在存储空间和处理资源方面的代价。
⑤ 不能用null 作索引。如果某列存在空值,即使对该列建索引也不会提高性能。
32 查询设计与优化
数据查询是数据库的核心操作。对查询进行优化,应尽量避免全表扫描。对于应用程序,重点在于Sql语句的执行效率。SQLServer提供了Select 语句进行数据库的查询。具体的优化方法:
① 建立索引时应考虑在Where 及Order By或Group By 涉及的列上。
② 只指定需要的字段。除非需要表中的所有字段,否则不要使用Select * From 这样的语句。③ Where 子句限制下载的记录数。在执行一个查询时,除非完全需要,否则应该避免在一个表中无限制地读并处理所有的行。Where 子句设定的范围和条件越精确,向计算机传输的记录就越少,查询完成得也越快。
④ 应尽量避免在Where 子句中对字段进行Null 值判断。当字段中有Null 值时,可以在该字段上设置默认值。,确保表中该列没Null 值。如:Select ID From Table Where Num Is Null
可以在Num 字段上设置默认值。,然后这样查询:Select ID From Table Where Num =0
⑤ 应尽量避免在Where 子句中使用NOT 、!= 或<>操作符。因为这样的子句是排斥性的,而不是包括性的,所以在扫描整个表之前无法确定子句的选择性。
⑥ 应尽量避免色Where 子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描,除非建立了基于函数的索引。
如:Select ID From Table Where Substring(Name,1,3)='xx'
应改为:Select ID From Table Where Name Like 'xx%'
⑦ 对于连续的数值,能用Between就不要用In 。
如:Select ID From Table Where Num In(1,2,3)
可改为:Select ID From Table Where Num Between 1 And 3
⑧ 合理安排多个选择条件的排列顺序。选择条件的排列顺序对性能的影响较大,要提高查询的响应速度,就要将较严格的条件写在前面,较弱的写在后面。
4 结束语
在设计开发SqlServer数据库应用系统中,合理有效地利用上述方法固然能提高性能,但系统性能优化是一个复杂的过程,影响数据库系统性能的因素是很多的,而应用又各不相同,找出一个通用的优化方案是不现实的,在系统开发的过程中应根据实际清况选择合理的数据库系统设计和优化策略,这样才能充分利用数据库管理系统提供的高性能服务使应用系统充分发挥其高效的功能。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Laut Nachrichten vom 12. Juli wurde die Honor Magic V3-Serie heute offiziell veröffentlicht und ist mit dem neuen Honor Vision Soothing Oasis-Augenschutzbildschirm ausgestattet. Der Bildschirm selbst verfügt zwar über hohe Spezifikationen und eine hohe Qualität, war aber auch Vorreiter bei der Einführung des aktiven KI-Augenschutzes Technologie. Es wird berichtet, dass die traditionelle Methode zur Linderung von Myopie „Myopie-Brillen“ ist. Die Stärke von Myopie-Brillen ist gleichmäßig verteilt, um sicherzustellen, dass der zentrale Sehbereich auf der Netzhaut abgebildet wird, der periphere Bereich jedoch dahinter Die Netzhaut erkennt, dass das Bild zurückliegt, wodurch die Richtung der Augenachse später wächst und sich dadurch vertieft. Eine der wichtigsten Möglichkeiten, die Entwicklung von Myopie zu lindern, ist derzeit die „Defokussierungslinse“. Der zentrale Bereich hat eine normale Stärke, und der periphere Bereich wird durch optische Designtrennwände so angepasst, dass das Bild im peripheren Bereich fällt vor der Netzhaut.

Leistungsvergleich verschiedener Java-Frameworks: REST-API-Anforderungsverarbeitung: Vert.x ist am besten, mit einer Anforderungsrate von 2-mal SpringBoot und 3-mal Dropwizard. Datenbankabfrage: HibernateORM von SpringBoot ist besser als ORM von Vert.x und Dropwizard. Caching-Vorgänge: Der Hazelcast-Client von Vert.x ist den Caching-Mechanismen von SpringBoot und Dropwizard überlegen. Geeignetes Framework: Wählen Sie entsprechend den Anwendungsanforderungen. Vert.x eignet sich für leistungsstarke Webdienste, SpringBoot eignet sich für datenintensive Anwendungen und Dropwizard eignet sich für Microservice-Architekturen.

Der Leistungsvergleich der PHP-Methoden zum Umdrehen von Array-Schlüsselwerten zeigt, dass die Funktion array_flip() in großen Arrays (mehr als 1 Million Elemente) eine bessere Leistung als die for-Schleife erbringt und weniger Zeit benötigt. Die for-Schleifenmethode zum manuellen Umdrehen von Schlüsselwerten dauert relativ lange.

Laut Nachrichten vom 29. Juli ist das Mobiltelefon Honor X60i heute offiziell zum Preis ab 1.399 Yuan erhältlich. Was das Design angeht, verfügt das Honor X60i-Mobiltelefon über ein gerades Bildschirmdesign mit einem Loch in der Mitte und nahezu unbegrenzten, ultraschmalen Rändern an allen vier Seiten, was das Sichtfeld erheblich erweitert. Parameter des Honor , Smart-Kapsel, Fingerabdruck unter dem Bildschirm, Dual-MIC, Rauschunterdrückung, Fragen und Antworten zu Wissen, Fotofunktionen: hinteres Dual-Kamerasystem: 50 Millionen Pixel Hauptkamera, 2 Millionen Pixel Hilfsobjektiv, vorderes Selfie-Objektiv: 8 Millionen Pixel, Preis: 8 GB

Laut Nachrichten vom 13. Mai wurde das vivo Laut der offiziellen Einführung von vivo verwendet vivoX100s ein innovatives universelles Signalverstärkungssystem, das mit bis zu 21 Antennen ausgestattet ist. Dieses Design wurde basierend auf dem Direktbildschirm neu optimiert, um viele Signalanforderungen wie 5G, 4G, Wi-Fi, GPS und NFC auszugleichen. Damit ist das vivo X100s das Mobiltelefon mit der stärksten Signalempfangsfähigkeit in der Geschichte von vivo. Das neue Telefon verfügt außerdem über ein einzigartiges 360°-Surround-Design mit rund um das Gehäuse verteilten Antennen. Dieses Design verbessert nicht nur die Signalstärke, sondern optimiert auch verschiedene tägliche Haltehaltungen, um Probleme durch falsche Haltemethoden zu vermeiden.

Die Zeitkomplexität misst die Ausführungszeit eines Algorithmus im Verhältnis zur Größe der Eingabe. Zu den Tipps zur Reduzierung der Zeitkomplexität von C++-Programmen gehören: Auswahl geeigneter Container (z. B. Vektor, Liste) zur Optimierung der Datenspeicherung und -verwaltung. Nutzen Sie effiziente Algorithmen wie die schnelle Sortierung, um die Rechenzeit zu verkürzen. Eliminieren Sie mehrere Vorgänge, um Doppelzählungen zu reduzieren. Verwenden Sie bedingte Verzweigungen, um unnötige Berechnungen zu vermeiden. Optimieren Sie die lineare Suche, indem Sie schnellere Algorithmen wie die binäre Suche verwenden.

Laut Nachrichten vom 19. Juli wurde Xiaomi MIX Fold 4, das erste neue Flaggschiff-Falttelefon, heute Abend offiziell veröffentlicht und ist erstmals mit einem „dreidimensionalen, speziell geformten Akku“ ausgestattet. Berichten zufolge hat Xiaomi MIX Fold4 einen großen Durchbruch in der Batterietechnologie erzielt und eine innovative „dreidimensionale, speziell geformte Batterie“ speziell für Faltbildschirme entwickelt. Herkömmliche Faltschirmgeräte verwenden meist herkömmliche quadratische Batterien, die eine geringe Raumnutzungseffizienz aufweisen. Um dieses Problem zu lösen, verwendete Xiaomi nicht die üblichen Wickelbatteriezellen, sondern entwickelte ein neues Laminierungsverfahren, um eine neue Batterieform zu schaffen, die die Raumausnutzung erheblich verbesserte. Innovation in der Batterietechnologie Um positive und negative Elektrodenblätter abwechselnd präzise zu stapeln und die sichere Einbettung von Lithiumionen zu gewährleisten, hat Xiaomi eine neue Ultraschallschweißmaschine und Laminiermaschine entwickelt, um die Schweiß- und Schneidgenauigkeit zu verbessern.

Zu den wirksamen Techniken zur Optimierung der C++-Multithread-Leistung gehört die Begrenzung der Anzahl der Threads, um Ressourcenkonflikte zu vermeiden. Verwenden Sie leichte Mutex-Sperren, um Konflikte zu reduzieren. Optimieren Sie den Umfang der Sperre und minimieren Sie die Wartezeit. Verwenden Sie sperrenfreie Datenstrukturen, um die Parallelität zu verbessern. Vermeiden Sie geschäftiges Warten und benachrichtigen Sie Threads über Ereignisse über die Ressourcenverfügbarkeit.
