搜尋
首頁資料庫mysql教程 【自爆系列】浅谈我对数据库性能注意事项的错误了解

对与数据库的性能,有很多注意事项 入行这些年,以为积累了这些就够了,也以为这些是对的,其实多为表面现象,似似而非 1:不要用select *,因为这影响性能,但是人懒,没办法,用了那么多select *,也没见死机不是 2:where 后面的东西要走索引,所以经常玩

对与数据库的性能,有很多注意事项

入行这些年,以为积累了这些就够了,也以为这些是对的,其实多为表面现象,似似而非

1:不要用select *,因为这影响性能,但是人懒,没办法,用了那么多select *,也没见死机不是

2:where 后面的东西要走索引,所以经常玩命的建立索引,反复的看查询分析器,到底走索引了没,单纯为了走索引而走索引,以至于出现

nG数据2nG的索引

3:小子加with(nolock)了没,服务器死锁了!没加赶快加,但是难免犯懒,这个东西加没加也缺乏有效的检测,经常这个人忘了加,哪个人忘了加我怎么知道,哎说多了都是泪

4:sql服务器主要的性能指标为CPU,和链接数,直到后来,才知道这些只是表现,sql服务器的主要指标是io,其次是cpu和连接数

5:为了提高性能,写一个老复杂老长的sql,后来才知道,这个老复杂老长的sql表面上性能高了,实际上反而降低了,尤其是并发来的时候的时候

6:项目的开始,必然是以一个数据库开始了,里面放了所有需要的表。。。。。。

直到有一次打电话给运维dba

                                                     问,我们要提高数据库稳定性改咋整?

                                                     运维回复:你要做读写分离还是要做主从还是要做啥呢,啪啦啪啦啪啦啪啦啪啦啪啦啪啦,

                                                     最后根据你们服务器io的表现,建议啥也别做自己优化程序吧,当时就想吧第一个创建数据库的人,第一个创建表的人(虽然已经离职N年了)拉出来,问:你当初建表的时候咋就不考虑这些呢?

从运维的角度,提高数据库稳定性的基本手段只能是读写分离(确保写入数据没问题,保持数据流畅通,不掉链子),一主多从或多主多从

参考 这篇文章,

主从库之间是一种发布订阅的关系,发布者和订阅者之间并非实时同步的,通常会有几分钟的延时,更有甚者会有几个小时的延时。所以我们需要通过合理的使用来避开有延时这个问题。我们希望主库尽可能的少参与查询,来提高写的及时性;同时要让从库在不影响读出数据的准确及时的前提下尽可能的分担主库的压力

(PS:运维还说,做了主从或什么的,必须是整个数据库进行同步,而不是某几个表,同时,整个数据库表的结构的修改,新增或删除表有可能导致意外风险时同步失败等等啪啦啪啦啪啦啪啦)

从一个数据库变成多个一摸一样的数据库,是解决数据库稳定性

随之产生的问题就是延迟!!!!!!!!!!!!!!!!!!!!!

首先本人声明,本人还没做过基于mssql主从数据库上的程序,新浪sae的APP由于读写分离延迟太小忽略不计了,而且是mysql的

根据项目老大和运维dba的分析影响主从时候延迟的因素主要有

1:你这个主库写入的数据的速度快不快啊,如果快了,那就得把写的快的表和字段拆出去

2:你这个主库修改的速度快不快啊,如果快了,那就得把修改快的字段拆出去

3:你这个主库整体写入和修改的速度快不快啊,如果快了,那就得一分为二

4:你的这个查询啊,那些有group 等的都在那些表上,该拎出来的就拎出来

5:至于宽带、硬盘读写性能、cpu等我们都是无力改变的,就当做不知道吧

6:你们看着办吧

总而言之,言而总之,,以前我对sql的性能总停留在 索引上和select * 上,这其实是不科学的表面现象,至少走没走索引你监控不了那个查询造成ip或cpu高了

sql服务器可以监控的指标

1:io 是否满载,是否出现sina(x) 那样的波浪线,频繁的满载

     ps:很多情况下,io频繁满载,例如周五,各个单位做数据汇总交差,管理员后来查询统计拉挂数据库服务器,进而拉挂前台展示站点。。。。

2:cpu是否满载,是否出现sina(x) 那样的波浪线,频繁的满载

    cpu:说实话你有没有在sql里面写死循环,没写死循环cpu应该没事

3:连接数是否满载,是否出现sina(x) 那样的波浪线,频繁的满载

   赶紧看看流量涨了没,是涨了多少,是以前的一倍还是2倍还是多少,如果少于3倍,问题必然出在1和2上

这3个要素也是运维或dba决定怎么搞数据库的主要指标,

话说基于主从结构的数据库改如何设计呢?

其实我也没设计过,最近我在折腾我自己的抓取站点,才第一次自己操刀给数据库分表,坑多路少。。。

根据运维和dba的意见(核心思想)----不管你做什么我们一年只给年干几次这样的操作!也就是主从设置什么的1年只设置几次,因为同步失败呀什么的就不管了。

根据我入行3年的个人经验整理如下(ps:这些均不考虑需要带锁的场景,我还没用过锁呢。。。。。)

1:以慢慢写为主的主库,例如博客园存放博文的表放的库,不可能出现1分钟1入100条数据的表

2:以快快读为主的读库,禁止使用各种锁,禁止使用各种表联合查询,禁止使用group等高io操作

3:以慢慢读为主的低并发库,例如各种要求时时查询(分钟级别),各种统计,各种查询

4:以快快写为主的库,这个库只作灾备切换处理,例如点击量统计、系统日志等

最后根据经过验,实现以上4点,没有搜索聚合数据这个工具是不行,刚开始了解lucene,了解的不多,欢迎高手拍砖。

最后就是关于orm

因为dba说,这个设置了,就不能随便新增表和修改表的结构了

随便应该是1小时改一次,不随便,应该是1各月弄一次,

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
深入理解MySQL索引优化器工作原理深入理解MySQL索引优化器工作原理Nov 09, 2022 pm 02:05 PM

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于索引优化器工作原理的相关内容,其中包括了MySQL Server的组成,MySQL优化器选择索引额原理以及SQL成本分析,最后通过 select 查询总结整个查询过程,下面一起来看一下,希望对大家有帮助。

小米 15 系列全代号曝光:Dada、Haotian、Xuanyuan小米 15 系列全代号曝光:Dada、Haotian、XuanyuanAug 22, 2024 pm 06:47 PM

小米15系列预计将于10月份正式发布,其全系列代号已在外媒MiCode代码库中曝光。其中,旗舰级小米15Ultra代号为"Xuanyuan"(意为"轩辕"),此名源自中国神话中的黄帝,象征着尊贵。小米15的代号为"Dada",而小米15Pro则以"Haotian"(意为"昊天")为名。小米15SPro内部代号为"dijun",暗指《山海经》创世神帝俊。小米15Ultra系列涵盖

华为 Mate 60 系列最佳入手时机,新增 AI 消除 + 影像升级,更可享秋日礼遇活动华为 Mate 60 系列最佳入手时机,新增 AI 消除 + 影像升级,更可享秋日礼遇活动Aug 29, 2024 pm 03:33 PM

自去年华为Mate60系列开售以来,我个人就一直将Mate60Pro作为主力机使用。在将近一年的时间里,华为Mate60Pro经过多次OTA升级,综合体验有了显著提升,给人一种常用常新的感觉。比如近期,华为Mate60系列就再度迎来了影像功能的重磅升级。首先是新增AI消除功能,可以智能消除路人、杂物并对空白部分进行自动补充;其次是主摄色准、长焦清晰度均有明显升级。考虑到现在是开学季,华为Mate60系列还推出了秋日礼遇活动:购机可享至高800元优惠,入手价低至4999元。常用常新的产品力加上超值

数据库系统的构成包括哪些数据库系统的构成包括哪些Jul 15, 2022 am 11:58 AM

数据库系统由4个部分构成:1、数据库,是指长期存储在计算机内的,有组织,可共享的数据的集合;2、硬件,是指构成计算机系统的各种物理设备,包括存储所需的外部设备;3、软件,包括操作系统、数据库管理系统及应用程序;4、人员,包括系统分析员和数据库设计人员、应用程序员(负责编写使用数据库的应用程序)、最终用户(利用接口或查询语言访问数据库)、数据库管理员(负责数据库的总体信息控制)。

iPhone 15 和iPhone 15 Pro 怎么挑?九大差异一次过目iPhone 15 和iPhone 15 Pro 怎么挑?九大差异一次过目Sep 14, 2023 am 08:01 AM

iPhone15与iPhone15Pro在今日正式发表,不过Pro系列作为高端机型,除了价格更高以外,也有许多专属功能,消费者在购买前得先认清差异,才不会在买了iPhone15后,才发现有些功能只有Pro系列才能用。显示器尽管搭载了相同的显示面板,但ProMotion自动适应更新频率技术与永远显示功能仍然是Pro系列专属。其余无论是在解析度、对比度、峰值亮度等层面,iPhone15与iPhone15Pro系列皆相同。动作按钮动作按钮目前是iPhone15Pro系列的专属设计,可以让使用者个人化自

数据库的什么是指数据的正确性和相容性数据库的什么是指数据的正确性和相容性Jul 04, 2022 pm 04:59 PM

数据库的“完整性”是指数据的正确性和相容性。完整性是指数据库中数据在逻辑上的一致性、正确性、有效性和相容性。完整性对于数据库系统的重要性:1、数据库完整性约束能够防止合法用户使用数据库时向数据库中添加不合语义的数据;2、合理的数据库完整性设计,能够同时兼顾数据库的完整性和系统的效能;3、完善的数据库完整性有助于尽早发现应用软件的错误。

access数据库的结构层次是什么access数据库的结构层次是什么Aug 26, 2022 pm 04:45 PM

结构层次是“数据库→数据表→记录→字段”;字段构成记录,记录构成数据表,数据表构成了数据库。数据库是一个完整的数据的记录的整体,一个数据库包含0到N个表,一个表包含0到N个字段,记录是表中的行。

mysql查询慢的因素除了索引,还有什么?mysql查询慢的因素除了索引,还有什么?Jul 19, 2022 pm 08:22 PM

mysql查询为什么会慢,关于这个问题,在实际开发经常会遇到,而面试中,也是个高频题。遇到这种问题,我们一般也会想到是因为索引。那除开索引之外,还有哪些因素会导致数据库查询变慢呢?

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境