mysql密码修改,存储过程的优缺点我的总结

在 Linux 主机中在命令提示行下输入下面的命令java

> MySQL -uroot -p123456

  123456 为 root 用户的密码。
建立远程登录用户并受权程序员

>grant all PRIVILEGES on *.* to liuwei@'%' identified by 'xingwi2017';

上面的语句表示将 discuz 数据库的全部权限受权给 ted 这个用户,容许 ted 用户在
123.123.123.123 这个 IP 进行远程登录,并设置 ted 用户的密码为 123456 。
下面逐一分析全部的参数:
all PRIVILEGES 表示赋予全部的权限给指定用户,这里也能够替换为赋予某一具体的权限,
例如:select,insert,update,delete,create,drop 等,具体权限间用“,”半角逗号分隔。
discuz.* 表示上面的权限是针对于哪一个表的,discuz 指的是数据库,后面的 * 表示对于所
有的表,由此能够推理出:对于所有数据库的所有表受权为“*.*”,对于某一数据库的所有
表受权为“数据库名.*”,对于某一数据库的某一表受权为“数据库名.表名”。
ted 表示你要给哪一个用户受权,这个用户能够是存在的用户,也能够是不存在的用户。
123.123.123.123 表示容许远程链接的 IP 地址,若是想不限制连接的 IP 则设置为“%”便可。
123456 为用户的密码。
执行了上面的语句后,再执行下面的语句,方可当即生效。面试

FLUSH PRIVILEGES;

公司的系统是自主开发的,历史比较悠久,有很多是传统C/S架构,采用存储过程来处理业务逻辑。数据库

近来作新系统的时候,我采用了三层架构,抛弃存储过程改用ORM。缓存

有同事问及不用存储过程的理由,我想了一下,对存储过程作了以下总结。服务器

本人经验和水平有限,总结有所偏颇,还请你们纠察。网络

优势架构

1.在生产环境下,能够经过直接修改存储过程的方式修改业务逻辑(或bug),而不用重启服务器。但这一点便利被许多人滥用了。有人直接就在正式服务器上修改存储过程,而没有通过完整的测试,后果很是严重。并发

2.执行速度快。存储过程通过编译以后会比单独一条一条执行要快。但这个效率真是没太大影响。若是是要作大数据量的导入、同步,咱们能够用其它手段。框架

3.减小网络传输。存储过程直接就在数据库服务器上跑,全部的数据访问都在服务器内部进行,不须要传输数据到其它终端。但咱们的应付服务器一般与数据库是在同一内网,大数据的访问的瓶颈会是硬盘的速度,而不是网速。

4.可以解决presentation与数据之间的差别,说得文艺青年点就是解决OO模型与二维数据持久化之间的阻抗。领域模型和数据模型的设计可能不是同一我的(一个是SA,另外一个是DBA),二者的分歧可能会很大——这不奇怪,一个是以OO的思想来设计,一个是结构化的数据来设计,你们互不妥协——你说为了软件的弹性必须这么设计,他说为了效率必须那样设计,为了抹平鸿沟,就用存储过程来作数据存储的逻辑映射(把属性映射到字段)。好吧,台下已经有同窗在叨咕ORM了。

5.方便DBA优化。全部的SQL集中在一个地方,DBA会很高兴。这一点算是ORM的软肋。不过按照CQRS框架的思想,查询是用存储过程仍是ORM,还真不是问题——DBA对数据库的优化,ORM同样会受益。何况放在ORM中还能用二级缓存,有些时候效率还会更高。

 

缺点

1.SQL自己是一种结构化查询语言,加上了一些控制(赋值、循环和异常处理等),但不是OO的,本质上仍是过程化的,面对复杂的业务逻辑,过程化的处理会很吃力。这一点算致命伤。

2.不便于调试。基本上没有较好的调试器,不少时候是用print来调试,但用这种方法调试长达数百行的存储过程简直是噩梦。好吧,这一点不算啥,C#/java同样能写出噩梦般的代码。

3.没办法应用缓存。虽然有全局临时表之类的方法能够作缓存,但一样加剧了数据库的负担。若是缓存并发严重,常常要加锁,那效率实在堪忧。

4.没法适应数据库的切割(水平或垂直切割)。数据库切割以后,存储过程并不清楚数据存储在哪一个数据库中。

5.精通SQL的新手愈来愈少——不要笑,这是真的,我面试过N多新人,都不知道如何建立全局临时表、不知道having、不知道汇集索引和非汇集索引,更别提游标和提交叉表查询了。好吧,这个缺点算是凑数用的,做为屌丝程序员,咱们的口号是:没有不会的,只有不用的。除了少数有语言洁癖的人,我相信精通SQL只是时间问题。

 

总结

存储过程最大的优势是部署的方便性——能够在生产环境下直接修改——虽然滥用的后果很严重。

存储过程最大的缺点是SQL语言自己的局限性——咱们不该该用存储过程处理复杂的业务逻辑——让SQL回归它“结构化查询语言”的功用吧。

相关文章
相关标签/搜索