粉丝2.9万获赞18.0万
今天这次课我们要讲的是修改表结构了,那修改表结构我们当然得先知道到底哪些东西能改,对吧?我们对比一下数据库哪些东西能改? 数据库能改的东西,我们看一下数据库属性,能发现只有自负极和排序规则能改。数据库的名字是不能改的,你想改名字只能把它删了,重新建过了。 那数据表呢?我们看一下他能改哪些东西。首先我们现在通过这个点击看一下这个设计表,我们能看到现在有这么些字段,对吧?六个,就我字段不够了,我要增加字段,这是一种变更,对吧?那我某个列不需要了,那我可能要删除一个列,那么列的名称能改吗?肯定能改,比如出版时间, 我不想要出版时间了,我想要出版日期,那把这个直接改一下就可以了。然后呢类型,比如说我们前面讲的 data 呢?是年月日的,我希望是年月日加十分秒那种 班,那就 dayt time d a t e t r m e 这就可以了。首先呢,图形化的操作,我们就这么先演示一下就好了,因为这个是很简单的东西。修改表我们先看最简单的,就是要增加一个浏览次数吗?通过命令怎么加?查询新店,查询到这个界面上来,这里的结构我们分两行来看, 上面呢是 alter table book, 下面呢是 add 浏览次数 internal。 要把 book 这张数据表进行修改嘛? 那么我们肯定就要说一下,我要修改数据表了,我把顾客这个表进行修改,所以前面三个单词就在说这个。那修改什么东西呢?我总得说吧,我要改什么,我现在要增加一个浏览次数,对吧? 然后前面建表的时候我们也提过,字段呢,不能只有一个字段名称的需要还带上类型的,所以最少呢,这个地方是这样子,增加浏览次数类型呢?是 inter 啊。这个 怒怒其实可以不写,因为默认就是怒,就是允许为空的意思。如果说我,我强行要求他不能为空,那就得写上 not 怒,这样运行一下,就会看到有个多了个浏览次数这个字段了,就这么新增的, 那字段能新增,那肯定也能删除,对吧?那么删除字段我们也看一下。删除字段呢,我们同样把它分两行来看,第一行是不是跟前面还是一模一样的? 然后呢,第二行不一样了,第二行用的单词是 job, 就是说我们把浏览次数这个字段给丢了,扔掉不要。 如果说我是想要把出版时间改成出版日期,首先呢,还是把它分两行来看,上面同样还是 alt tablebook, 对吧?但凡反正修改表结构呢,都是 alt tablebook 作为开头, 春卷同样还是一个英文单词,就是更改的意思。那作为修改名字这个事情来说,理论上来说是不是其实只要把 把名字变更前和变更后的名字写上就行了?他这个执行起来的时候呢,就是有点像是他先把出版时间这个字段删了,然后单独又增加了个出版日期这种感觉,所以呢,稍微有点违反直流的感觉,就是我不能只写名称,还是得把类型写上的。 那我这个时候再趁着出版时间,出版日期,然后 dat 修改了名字之后呢,还有种情况的,就修改类型,同样分两行。这个新的单词是什么?叫 modify, modify 呢?它还是变更的意思,所以呢,我们现在就说,我要把你原来的这个 呃年月日改成年月日十分秒这个格式,这时候呢,预期的效果就是这个地方变成 dayt time。 那修改名字是怎么改呢?到这里我们看一下。修改名字呢,其实有两种写法,一种简单的写法呢叫做 rename book copy 一的表改 改成 to 不可以表。下面一种的写法呢,跟上面都是对齐的,同样是这样子, alt table 不可分两行, 这会的意思呢是什么?就是我原来叫扑克表,我现在呢, rename 从命名成扑克二表,表不需要了,我要把它删掉,删除表上的单词是 drop。 删除表呢?我得说删除表, t a b l e 删除表,那删除哪个表呢?现在是只有一个这个不可二的表,对吧?那我们就删除不可二的表,运行一下,然后这款呢,再刷新一下,这个不可二的表就没了。然后呢,还有一个点就是 变更这个操作,我们现在是这样子,罗列在这边,每个都有个分号,对不对?他其实是很多句话,那我其实是可以把它写在一句话里的, 比如说 alt table book, 我只想写这一次,第一行是说我要修改 book 表了,第二行呢是说我要增加一个浏览次数,然后用逗号隔开。第三行呢是说我要把出版时间改成出版日期这么个意思,然后这样子是可以一起运行的,我可以同时增加字段,又可以修改类型。
你有没有这样的经历,就是自己在写代码的时候呢,感觉缩口执行非常快,然后程序的一个性能呢,也是杠杠的,但是没过几天发布到线上客户端呢,频繁报错,然后一看这个报错信息居然是后端的这个接口超时了啊,于是你就一脸问号,当时我查数据库明明挺快的呀, ok, 哈喽,大家好,我是于峰,欢迎大家看明视频。那么今天呢,我们就一起来分享几个 sucle 性能优化的小技巧啊,我今天所提到的这些小技巧呢,都是非常的简单,但是呢,经常会被忽略啊,如果你按照今天的这些改进的啊,这些方式去做的话呢,你后续的这个 sucle 的性能优化一定是非常有效果的, ok 啊,那么首先呢,我们来看第一段 soco 啊,就是斯莱克的希望 from restaurant 啊,大家现在可以暂停一下你的这个视频啊,然后我们弹幕一起交流一下他所存在的问题啊,其实很简单,就是咱 咱们使用了这个新号去查询对吧?啊,在我们公司啊,我不知道你们公司怎么样,我们公司的 dba 是明确规定的,数据库查询的时候不能够使用新号, 一定要写清楚你当前这个查询要返回哪些字段。那这个时候呢,可能有的同学就会啊疑问啊,不就是查询了所有字段吗?难道会有什么其他非常严重的问题吗? 首先呢,就是你在使用 slog 的星的时候呢,数据库需要去解析更多的对象自断权限属性,那么在 soco 一句复杂应解析比较多的这种情况下呢,会对数据库造成非常沉重的这个负担,也就是他的这个计算的负担,对吧? 那么另外一点呢,就是这个星号会带上所有的资段,如果说你的这个啊表当中某些资段,比如说是这个 blob 和 taxt 啊这种类型啊,那么你数据传输的这个 size 呢,就会啊非常的大啊。 另外呢,就是咱们现在这个微服务啊, db 和应用程序是分开的,对吧?所以说通过网络传输啊,这种数据库结果的时候呢,这个开销是非常非常大的 啊。另外一点呢,可能是一个面试题相关的,就是斯莱克的心,他失去了覆盖所引的这个可能性啊啊,比如说现在我们有一个表啊,他是 t, a, b, c, d, e, f 啊,其中呢,这个 a 是主见, b 呢是我们人为给他添加了一个缩影, 那这个时候呢,在磁盘上实际上是有两颗必加数的啊,也就是聚集所以和咱们这个辅助,所以啊分别保存的是 abcdef 和咱们的这个 ab 啊,这个地方可能有点云里雾里啊。我们说简单一点,全部的数据呢,我们给大家叫 data, 然后所以我们叫 index, 如果说查询条件中, where 条件可以通过 b 啊这个 b 列的缩影过滤掉一部分数据,那么这个时候呢,他的这个查询是优先走了 index, 那么如果说用户 只需要返回 a 和 b 啊这两列数据的话呢,那么直接通过 index 就可以查询并返回用户的这个数据,这个时候呢是非常非常快的啊。但是如果现在用户使用了这个斯莱克的星啊,他需要获取一些非 index 的数据,那么他的一个查询过程其实是这样的, 首先呢通过 index 过滤掉数据,然后再通过 data 啊去查询得到你其他的这些列的数据,对吧?那么这个时候呢,就无形当中增加了一次 b 加数的这个查询,相对于只查 ab 来讲会啊慢很多。 好的,那么这个斯莱克的心我们讲的有点多啊,接下来我们来讲一下这个小数据及驱动大数据级啊,其实就是讲一个啊,使用 in, 不要使用这个 exist 啊,怎么说呢,比如说现在我们有两张表,一个是 goods 啊,一个是这个 restaurants 啊,我们这个 restaurants 可能在数据库里面只有八千多条数据啊,但是这个 goods 它非常多, 有一百多万条啊,所以说他们两个的数量级是完全不一样的。当你去使用了这个 exist 的时候呢,他首先是会去查所有的这个故字,然后来过滤啊,这个 exist 里面的这些子句啊是否有包含,所以说他是先查大表再去过滤, 就是不满足小表里面的这些条件的这样的一些数据,对吧?啊?但是呢,我们如果使用了这个硬的话呢,他的一个查询正好是反过来的,首先呢他会去执行硬里面的这个查询语句,然后得到了一个条件啊,得到了一个数据集,比如说 id 的这个集合。然后呢我们再查询这个 裤子的时候啊,他会去走这样的一个比较小范围的查询啊,那么这个呢,就是小数据级驱动大数据级的一个策略啊,大家以后在写 sogo 的时候呢,都要尽量往这个方面去靠啊。另外这个地方我们还需要补充一点,就是啊,你需要考虑 考虑一下硬字段的这个内容会不会很多,如果很多的话呢,你需要去分批查询,然后避免这个返回数据量过大,造成程序的这个内存溢出啊。然后另外一点呢,就是我们公司实际上是不推崇像这样的一种写法,就是一条 so 口,但是里面操作了两张表。 我们通常的一个正确的做法是把这个 restaurant 啊这个里面的子句,首先在程序里面查出来,然后得到一个 id 的列表,然后呢再作为参数传给固子这张表的查询啊,这样就啊,一条 soco 只会去操作一张表啊, ok。 那么第三点呢,我们讲到的是批量插入代替这个循环插入啊,这个非常的简单,比如说现在我们有很多的 oder, 然后我们这样循环去操作,实际上性能是很低的, ok, 然后会多次去和数据库做一个交互,对吧?啊?我们其实正确的一个做法是使用这个买 is 他的一个 p 处理啊,就是 insert batch 啊,大概他最后执行的一个 circle 是这个样子, ok。 然后第四点呢,其实就是用 limit 限制返回的一个条数啊,因为我们公司有一个硬性的规定,就是你所有的这个 list 接口和 querry 接口呢,必须要做分页啊,因为有 size 才可以去避免内存溢出啊。 所以说大家在写色口的时候呢,也尽量能够去啊,做一下厘米茶,比如说你现在提供的是一个内部接口,他虽然说没有一个明确的 size, 但是你也可以去强制要求一下,比如说最多不能返回两千条啊,最多不能返回一千条等等,这样我觉得这个做了之后呢,会让你的这个程序有非常好的这个 稳定性啊,就不至于说啊,突然有一天某一个条件出发了一个非常大的查询,然后整个你的这个程序就挂了,这个之前我们也是有过线上故障复盘的一个经历的, ok, ok, 那么接下来呢,我们看一下第五点啊,就是同步数据的时候,我们去使用一个 update at 来检索出增量的数据啊,然后定时任务再去跑的时候呢,是可以以非常小的一个时间频率去跑这个增量数据的一个更新的,然后它也避免了全表的一个扫描啊,这个性能就非常的好,对吧? 啊?实际应用的一个例子呢,就是我们公司会有一个 es 的锁引构建的定时任务,然后呢他再去跑这个 restaurant 的时候呢,只会去跑最近时间往前推两分钟的啊,这样的一些增量的数据啊, 我觉得这个是大家也可以去学习和借鉴一下。然后第六点呢,就是我们的一个分页优化啊,分页的查询优化,对吧?比如说我们这个地方啊,很简单啊,我们去查这个固字表,然后首先第一页是呃一,然后三十这样的一个 size, 对吧?但是呢它随着这个佩奇那么不断的增大分页往后啊,它的这个效率 率是非常低的, ok, 那么这个时候呢,我们其实可以去借助上一次查询的那个最大 id 啊,或者说上次查询的那个啊,欧德拜的那个阶段的一个最大值或者最小值来做一个啊条件的这个过滤啊,比如说这个地方我们就按最大的那个 id 吧,比如说前段这个时候呢,就可以把列表当中最后一条数据 返给我们,然后我们来作为一个条件的拼接,然后我们再去做一个分页的查询啊,这个时候就非常不错了, ok 啊,那么最后一点呢,就是缩小数据级的这个条件要放到前面啊,其实这个我觉得大家应该都能理解啊,就是比如说我们现在去查这个 restaurant 这张表, 然后现在呢,我们这个地方有一个 exdelyt 的等于零啊,就是所有没有删除的这个餐厅啊,我们把它查出来,但是呢其实这个地方并不是很好,如果说让我去改写的话,我会把 这个 wechat id 放到前面去啊,因为这个 wechat id, 比如说某一个大区,他可能只有三十多条数据,可能只有四十来条数据,对吧?然后我们再在这三十四十条数据当中呢,去过滤没有删除的,并且他的这个折扣率是大于二十的啊,那这个就啊比你 当前写的这个 east delete 等于零,然后再去过滤这个啊,它的这个数据过滤的这个数据级是要小很多的, ok, 那么所以说大家在啊写 cico 的时候呢,也尽量去往这方面来考虑一下啊,尽量能够让第一个查询条件就过滤掉非常多的数据, 然后减小你的这个数据集,然后不断你再往下走的时候呢,他的这个效率,是啊会越来越明显的。 ok, 好的,那以上呢就是本期视频的一个全部内容了,如果大家觉得这个视频做的还不错的话呢,请帮忙点赞、投币分享,一键三连支持我一下。那么如果你还没有关注我的这个频道啊,也请你点下关注,我的这个频道呢,是专注于程序员干货视频教程分享,关于程序员身心健康的这样一个频道。 ok, 我们下个视频再见吧。
大家好,这一节可以讲一下数据库的备份和还原,比如说这是个数据库, 我怎么给他备份呢?我直接点这个,然后转出为 secure 文件结构和数据,我到桌面,然后就备份成功。 别说我现在把这些表全部删除, 我再运行一下刚刚备份的 secre 文件, 还原成功,这是对数据库 部的备份和还原。因为后面 senk p g p 需要讲一个登录功能,需要用到这个表,因此我把这个表备份一下,然后再把它还原到另外一个数据库。 欢迎到这个数据库, 就是这种导入导出操作就可以了。是不是很简单? 其实如果是在同一台电脑上,像这种表的转移哈,有更简单的方法,直接用复制然后粘贴就可以了,我这就不演示了。 好,这节课就先讲到这里,下一节课又转入胜客 php 讲登录的功能。
在学习数据分析的过程中,安装满折扣总是让人崩溃,就在刚刚还有个朋友向我求助,安装满折扣总是报错怎么办? 哈喽,大家好,我是你们的冷凡社长,今天社长准备了一个保姆级的教程,帮你解决这个问题,按照社长的教程,你只需要进行几步简单的操作就可以完成整个安装过程。学习数据分析,苦于安装满分 q 九已, 那我们话不多说,赶紧进入视频演示吧,我们来演示买车库如何安装,这张已经准备好了图文版的教程。首先第一步我们要进行买车库安装包的下载,打开网页输入买 cq, 进入官网,然后把页面翻成中文,然后点击下载,按到最下方,点击满是扣社区下载,点击适用于温度式的满是扣,按照 程序选择下面这个体积比较大的下载,然后点击 nosex, 然后开始下载啊保存到桌面,然后他这个时候就开始下载了。下载完成后,我们得到一个安装包,我们接着看教程。 有的小伙伴可能在下载的这一步就失败了,下载的速度比较慢,所以社长这里提供了一个解决方案,已经在飞速的小伙伴呢,可以点击我们的原文档,点击共享空间, 然后找到安装包下载,然后这个就是社长新上传的百事故的安装包,然后点击下载,点击下载 你会发现他的速度也是比较快的。好,我们继续看教程。下一步就是买舒克安装,社长提供的安装流程只需要操作两个地方,其他的地方都是默认就可以了,第一个是安装的时候只选择服务,第二个是 只需要我们自己来设置密码,我们双击我们男装程序,首先我们要只安装这个十二位就可以了,我们学习满是扣,其他的功能是用不上的。这里要说一下我 我们左侧的这个栏目可能会随着我们的往后操作而变化,大家的电脑环境不同,他的流程也会有些小的差别,转折完服务后,如果你的电脑是比较新的,你会出现这样一个界面, 就是要安装一个依赖,然后点下一步,他就会按照这个吃家家的依赖,然后同意安装即可。 然后呢会进行到这一步,然后我们来看我们实际的,因为社长的环境中已经有那个依赖了,所以社长这里点下一步会直接出现这个安装服务的界面,然后我们进行服务安装,这就是加载完成,然后我们点下一步,他这是一个产品数, 我们晚点下一步,从这里开始呢就进行买车购的配置,然后这里也不需要任何的改装,我们进行下一步,这里呢是选择他的一个身份认证方式,我们默认就可以了。这一步是我们需要自己来设置一个密码, 这样建议呢密码设置不要太过复杂,然后同时不要超过八位。好,设置完成后点下一步,然后点下一步,然后点下一步, 好到这里我们点击完成,然后到这里我们点击完成即可。设置完密码,后面的步骤都是默认就可以了,我们往下进行,即使我们安装已经成功了, 但是为了确保他真的成功了,我们需要进行验证,那社长这里提供的方式呢?就是利用买社扣管理工具来进行验证,一般情况下我们按照买社扣 的时候也要安装一个满是扣管理工具,一般比较常认就是 notket, 然后我们今天就使用这个工具来进行验证,点击创建连接,点击满是一扣,这个名称呢,我们随便起,然后其他内容他已经帮我们填好了,我们把我们密码输进去 啊,点击测试连接好,连接成功,这就说明我们买石柜已经安装成功了,然后我们就可以利用这个工具来练习了, 新建一个查询,然后输入一个简单的句子,好的,我点击运行 好就有结果了,那我们继续看教程,使用这种方式验证非常的简单,都不需要你去写命令行,也不需要你去添加环境变量,当然也有小伙伴还没有来得及安装管理工具,那我们可以用传统的方式来验证,首先呢我们按下 温加尔,然后在这里面输入 cmd, 根据确认,然后我们需要进行散步动作,首先第一个是输入 cd, 加上我们这个特定路径好,然后我们回车,这样的话我们命令就在这个路径下执行了, 然后我们输入这个固定的启动命令代码好,然后我们回车,就要求我们输入密码,我们输入我们的密码,然后回车好到这一步呢,我们也验证了我们的买车安装成功了,然后我们会出 最后说一下重装可能遇到的问题,如果你安装过,然后现在又要重装的话,很可能会出现你在安装的过程中,直到这个页面就结束了, 然后你需要再次点击这个安装程序,然后进入到这样的一个界面,然后点击配置, 然后就一路的默认就可以了。到了设置密码的部分呢,就设置密码就和上面的流程完全一样了,谢谢大家的观看。 按照社长的教程成功安装了买社扣,欢迎来评论区报喜,当然遇到问题也可以来评论区咨询,如果你觉得这期视频有用的话,不要忘记给社长点赞,收藏加转发,大家的鼓励就是我创作的动力。 安装完满社扣后,我们总要有一个创手的工具来写收口,那下期视频的主题就是满收扣的管理工具,把满收口安装和满收扣管理工具搞定的话,你的收口学习之路就成功了三分之一。以上就是这期视频的全部内容了,祝大家的安装过程一切顺利,我们下期视频见。
好,下面我给大家录制一下这个 miceco 这个数据库的安装过程,那 miceco 的安装过程其实有很多坑,如果这个坑你不知道的话,很很可能就出现安装不上或者安装报错卡住这种情况。有多年的一线开发和教学经验 啊,有问题你可以问我哈,然后我们来看一下。哎,好,找到哪里呢?首先你看一下啊,你要先安装这个,先安装这个哈,这个可能安装起来稍微有点麻烦哈, 安装过你就不用安装了。 好,你看我这种情况哈,就是安装过了,你看您的安装将不会进行。为什么你已经安装了呀,是不是?所以如果出现这种情况,你就不用再安装了,关闭就可以了。好吧,好,然后我们现在来找到这个哈,来找这个麦斯 co 杠,五点七点看这个吗?这个哈,双击一下, 好,出现这个对话框了,点打上对号 来。 next, 选这个, so only nice, 选 e x e c u t e 好,等待它安装 好 nice 的 nice, 看端口号是三三零六,你看见了没? 默认是三三零六,有些有些这个买家可能出现这里出来个叹号,黄色叹号,那说明是这,而且这个 nice 的不能点,那你就改成三三零七啊,也是 ok 的哈,最好不要动哈,如果没报错,你就不要动, 如果有叹号,你可以尝试一下改下这个三三零七哈,如果没叹号,你就这样走就行了哈。 nice, 好,我们给他个密码,我的项目所有的密码都是,嗯,那个连接输入的密码都是 rot r o o t r o o t。 好吧,这个是 r o o t, 这是 r o t。 好, nice 的, 好, next next 好,执行 e x e c u t e 等待哈,这个过程可能有点慢。 ok 啊,全安装成功了吧。安装成功以后点 fish, 完成 next fish。 哎,这个时候打开 navikit, 看见没?这 navikit 我会发你的哈。打开 navikit, 然后找到,找到一这个 navikit, 点 exe 看见没啊,我们可以这个双击打开就行,或者 你发送桌面快快捷方式也行哈,你觉着啊,点连接哈,点连接,我们给他起个名叫本地,这个民间名随便起随便起哈,我的密码还记得吧,是不是 root 啊?和用户名是一样的哈,都是 root。 点连接测试,一定要连接测试哈,连接成功 啊,连接成功,说明你的奈位 kit 啊,就就可以连接吗?搜索水库了哈。点确定啊,这个连接名已经存在了哈。我该换个连接名哈。啊,本连接六六六,好吧, 好,连接测试,连接成功,点确定密码是入册,别忘了哈,然后双击一下变成绿色才可以用。你看,这个时候就可以新建数据库了,是不是啊,就可以说是新建数据库了。我给大家解释一下 navicket 是什么哈? navicket, 它是一个可视化的 工具,它是用来连接 masco 数据库的,其实它本身就是连接的 masco 数据库,它只不过是因为 masco 它是一个黑框框,是不是?原来 masco, 你看它是一个黑框框,我们操作起来非常不方便对吧? 非常的不方便,所以我们就出了一个这样的可视化工具,让你方便的去操作麦斯口到此,你的麦斯口才算是安装完毕啊,安装完毕哈。