mysql和sql server有什么区别

mysql和sql server有什么区别,第1张

mysql和sql server主要有以下区别:

性能:

这可能是所有DBA最关心的。mysql的读写性能确实一流,即使针对大数据量也没问题,但前提是必须使用简单查询,就是最好不要使用函数/join/group等方式查询。而sqlserver的简单查询速度不如mysql,但复杂查询时,性能降低的不多,可见,sqlserver的查询优化作的可能更好。但你可以通过针对性的表结构设计来避免mysql进行复杂查询(多冗余,少关联)插入速度也很快。为了提高性能,我甚至使用了不用日志的方式,确实快,哪怕大量并发也没问题。

2 对机器配置的要求:

mysql对机器配置要求不高(于sqlserver相比)。对于大表的ϖ作,一台pd925/2Gram/sataII硬盘//linux26内核 的机器可以轻松处理几千万条记录的数据表。而对于sqlserver,我们使用了 双xeon5110/4Gram/raid10(6块sataII硬盘)/win2000ADserver的机器,数据表也有几千万条记录,结果负荷一高就崩溃了,很不稳定。

3 安全性

感觉mysql5+linux26的安全性高于win2ksp4+sqlserver2000sp4,mysql漏洞少,我们有一台sqlserver,因为某些功能必须开放1433端口,虽然用了防火墙并作了安全配置,但还是被黑了。因为mysql的安全配置比较透明简单,权限明确,不易出漏洞。而sqlserver的用户配置是和ϖ作系统绑定的,很容易出问题。此外由于不是开源系统,1433端口暴露的安全问题谁也说不清,最好是将其完全放入内网,其他的都是扯淡。

4 可配置性

mysql可配置性很好,基于文本文件,很细很清晰。而sqlserver的很多配置必须用特定的存储过程完成,较复杂,不清晰(虽然基本配置很简单,有图形界面)

5 功能

这点mysql与sqlserver确实没法比,如存储过程/触发器/丰富的函数/图形化的管理界面/自动维护的计划任务/与开发工具的集成等等

总结起来,sqlserver体现了ms产品的一贯特点:容易上手,编程方便(sqlserver内置的查询优化作的确实不错,对于一些数据库新手来说方便很多——即你不必对表结构作过多优化也能得到不错的性能),因此倍受“揽活公司”(我是这么称那些开发Mis项目的公司的)的喜爱,你完全可以集中注意力在应用的实现上,而且,小项目意味着小数据量,一般的服务器也能应对了;而大项目往往意味着大的数据量,好在一般预算也高,可以选择更高档的服务器来伺候Sqlserver。

对于程序开发人员而言,目前使用最流行的两种后台数据库即为MySQL和SQL Server。这两者最基本的相似之处在于数据存储和属于查询系统。你可以使用SQL来访问这两种数据库的数据,因为它们都支持ANSI-SQL。 还有,这两种数据库系统都支持二进制关键词和关键索引,这就大大地加快了查询速度。同时,二者也都提供支持XML的各种格式。

区别如下:

1、SQL适合使用“NET”,而MySQL可以与几乎所有其他语言配对,如“PHP”。

2、sqlserver和mysql的语法不同。

3、SQL使用单个存储引擎,而不是为MySQL提供的多个引擎等等。

实际上,每个现代Web应用程序和数据库都起着至关重要的作用。由于当前Web开发的动态特性,即使是基本的应用程序也需要一些存储,检索和修改数据的机制。当然,随着数据库的重要性飙升,某些关系数据库管理系统(RDBMS)也越来越受欢迎。
其中两个系统是MySQL和SQL Server。虽然它们具有独特的用例,但它们都执行相同的功能。它们运行不同的风格,但是共同基于SQL或结构化查询语言。

因此,开发人员可以期待MySQL和SQL Server之间的一些相似之处,例如使用表来存储数据,引用主键和外键,以及单个环境或服务器中的多个数据库。
将MySQL和SQL Server称为现有的两种最流行的RDBMS解决方案并不是不准确的,尽管Oracle和Postgres可能会对此有所说明。即使我们逐渐见证了从SQL向NoSQL的转变,前者仍然是更具主导地位的存在。这意味着现在是学习MySQL或SQL Server的好时机。

mysql -u用户名 -h主机名 -p
前提是服务器的mysql上有该用户,以及对应的IP
可登入mysql服务器上执行
grant all on test to 用户名@‘客户机IP’ identified by '密码' ;
flush privileges; #刷新权限表,让所做修改生效
上面指令的意思是 将test这个数据库的全部内容以及全部的 *** 作权限赋权给从特定IP上登入到本服务器的用户。

对于程序开发人员而言,目前使用最流行的两种后台数据库即为MySQL and SQL Server。这两者最基本的相似之处在于数据存储和属于查询系统。你可以使用SQL来访问这两种数据库的数据,因为它们都支持ANSI-SQL。还有,这两种数据库系统都支持二进制关键词和关键索引,这就大大地加快了查询速度。同时,二者也都提供支持XML的各种格式。除了在显而易见的软件价格上的区别之外,这两个产品还有什么明显的区别吗?在这二者之间你是如何选择的?让我们看看这两个产品的主要的不同之处,包括发行费用,性能以及它们的安全性。 \x0d\\x0d\根本的区别是它们遵循的基本原则 \x0d\\x0d\二者所遵循的基本原则是它们的主要区别:开放vs保守。SQL服务器的狭隘的,保守的存储引擎与MySQL服务器的可扩展,开放的存储引擎绝然不同。虽然你可以使用SQL服务器的Sybase引擎,但MySQL能够提供更多种的选择,如MyISAM, Heap, InnoDB, and Berkeley DB。MySQL不完全支持陌生的关键词,所以它比SQL服务器要少一些相关的数据库。同时,MySQL也缺乏一些存储程序的功能,比如MyISAM引擎联支持交换功能。 \x0d\\x0d\发行费用:MySQL不全是免费,但很便宜 \x0d\\x0d\当提及发行的费用,这两个产品采用两种绝然不同的决策。对于SQL服务器,获取一个免费的开发费用最常的方式是购买微软的Office或者Visual Studio的费用。但是,如果你想用于商业产品的开发,你必须还要购买SQL Server Standard Edition。学校或非赢利的企业可以不考虑这一附加的费用。 \x0d\\x0d\性能:先进的MySQL \x0d\\x0d\纯粹就性能而言,MySQL是相当出色的,因为它包含一个缺省桌面格式MyISAM。MyISAM 数据库与磁盘非常地兼容而不占用过多的CPU和内存。MySQL可以运行于Windows系统而不会发生冲突,在UNIX或类似UNIX系统上运行则更好。你还可以通过使用64位处理器来获取额外的一些性能。因为MySQL在内部里很多时候都使用64位的整数处理。Yahoo!商业网站就使用MySQL 作为后台数据库。 \x0d\\x0d\当提及软件的性能,SQL服务器的稳定性要比它的竞争对手强很多。但是,这些特性也要付出代价的。比如,必须增加额外复杂 *** 作,磁盘存储,内存损耗等等。如果你的硬件和软件不能充分支持SQL服务器,我建议你最好选择其他如DBMS数据库,因为这样你会得到更好的结果。 \x0d\\x0d\安全功能 \x0d\\x0d\MySQL有一个用于改变数据的二进制日志。因为它是二进制,这一日志能够快速地从主机上复制数据到客户机上。即使服务器崩溃,这一二进制日志也会保持完整,而且复制的部分也不会受到损坏。 \x0d\\x0d\在SQL服务器中,你也可以记录SQL的有关查询,但这需要付出很高的代价。 \x0d\\x0d\安全性 \x0d\\x0d\这两个产品都有自己完整的安全机制。只要你遵循这些安全机制,一般程序都不会出现什么问题。这两者都使用缺省的IP端口,但是有时候很不幸,这些IP也会被一些黑客闯入。当然,你也可以自己设置这些IP端口。 \x0d\\x0d\恢复性:先进的SQL服务器 \x0d\\x0d\恢复性也是MySQL的一个特点,这主要表现在MyISAM配置中。这种方式有它固有的缺欠,如果你不慎损坏数据库,结果可能会导致所有的数据丢失。然而,对于SQL服务器而言就表现得很稳键。SQL服务器能够时刻监测数据交换点并能够把数据库损坏的过程保存下来。 \x0d\\x0d\根据需要决定你的选择 \x0d\\x0d\对于这两种数据库,如果非要让我说出到底哪一种更加出色,也许我会让你失望。以我的观点,任一对你的工作有帮助的数据库都是很好的数据库,没有哪一个数据库是绝对的出色,也没有哪一个数据库是绝对的差劲。我想要告诉你的是你应该多从你自己的需要出发,即你要完成什么样的任务?而不要单纯地从软件的功能出发。 \x0d\\x0d\如果你想建立一个NET服务器体系,这一体系可以从多个不同平台访问数据,参与数据库的管理,那么你可以选用SQL服务器。如果你想建立一个第三方站点,这一站点可以从一些客户端读取数据,那么MySQL将是最好的选择。 \x0d\\x0d\这两者数据库都能够在NET或J2EE下运行正常,同样,都能够利用RAID。 \x0d\\x0d\1,优点分析:MYSQL短小精悍,容易上手, *** 作简单,免费供用的。相对其它数据库有特色又实用的语法多一些。SQL怎么也算是大型数据库,稳定,能做一般大系统的数据仓库,运行速度明显比MYSQL快N多(海量数据下这个优势显而易见)。 \x0d\2,缺点分析:MYSQL难担当大系统的数据仓库,运行速度慢,不够稳定,有掉线的情况。SQL SERVER价格贵(当然没说5元盗版),使用起来比MYSQL要难一些,毕竟东西大了说道多点。 \x0d\3,按你的补充(如何登录):MySQL自己有文字界面客户端,用起来咋说也没鼠标点方便(不过习惯了也好),当然配对MYSQL有专业的客户端软件,我是用SQLYOG519版的,各种 *** 作真的是很方便的说。SQL SERVER 就用自带的查询分析器登录了:) 两者的前提是数据库服务都带打开,而且你得知道安装时的用户名密码哦:) \x0d\\x0d\SQL-Server 2000 是微软公司开发的中型数据库,它的可视化方面做得很好,在安全性等方面功能非常强大,并且有微软的强大技术支持,当然价格比较昂贵,适合应用于中型系统。 \x0d\MySQL是 MySQL·AB开发的小型数据库,基本上具有了数据库所需的所有功能,但是功能没有SQL-Server强大,技术支持也跟不上,但是价格便宜,在满足它的许可协议的情况下可以免费使用,适合于小型系统。 \x0d\语言都是一样的(SQL)是结构化查询语言

   迁移MySQL数据库通常只需要几个简单的步骤,但是由于您要转移的数据量可能比较庞大,因此一般耗时也会比较长。

 

     

 

    下面的步骤将指导您如何从旧的服务器上导出MySQL数据库,对它进行安全加固;然后将其复制并导入到新的服务器上,以保证数据的完整。

 

    将MySQL数据库导出至转储文件(dump file)

 

    Oracle提供了一个名为mysqldump的工具,允许您轻松地将数据库结构和其数据导出到一个SQL的转储文件。您可以使用如下的命令:

 

    1mysqldump -u root -p --opt [database name] > [database name]sql 

 

    不过,请注意如下几点:

 

    我们可以使用--single-transaction的标志,以避免数据库在导出数据的过程中被锁死。这样能够在将数据导出到转储文件的同时,您仍可继续在旧的数据库上更新数据。不过请注意,那些在导出进程已经开始之后被更新的数据,是不会被导入转储文件之中的。

 

    在运行该命令之前,请务必将[database name]替换成您的实际数据库名称。

 

    请输入您自己的用户名和相对应的密码,并确保该用户具有备份数据库所需的权限。

 

    安全加固备份文件

 

    在大多数情况下,数据是一家企业的最重要的资产。因此,我们不希望数据库的各种备份被暴露在不受保护的服务器上,因为这样有可能会造成错误地泄露,甚至会出现被黑客窃取等更为糟糕的状况。

 

    因此,通常您可以尝试的做法是:压缩、加密文件,然后删除原文件。在Linux *** 作系统上,请使用以下的命令对已压缩文件进行加密:

 

    1zip --encrypt dumpzip dbsql 

 

    在压缩开始之前,系统将提示您输入密码。

 

    传输备份文件

 

    至此,我们已经获得了一个加密的转储文件。下面让我们通过网络使用SCP命令,将其传输到新的服务器上:

 

    1scp /path/to/source-file user@host:/path/to/destination-folder/ 

 

    将MySQL转储导入新服务器

 

    通过上面一步,我们已将备份文件传到了新的服务器上,下面让我们来进行解密和提取:

 

    1unzip -P your-password dumpzip 

 

    为了存储空间和安全方面的原因,一旦文件导入成功,请记得删除其对应的转储文件。

 

    您可以使用以下的命令来导入文件:

 

    1mysql -u root -p newdatabase < /path/to/newdatabasesql 

 

    在新服务器上验证导入的数据

 

    现在我们在新服务器上已经导入了数据库,那么我们就需要一种方法来验证数据的真实存在,并确保没有任何遗漏。

 

    我建议您同时在旧的和新的数据库上运行如下查询,并将获得的结果进行对比。

 

    该查询会在所有的表里计算行数,以显示出新、旧数据库中的数据量。

 

    1SELECT   

    

    2TABLE_NAME,   

    

    3TABLE_ROWS  

 

    4FROM   

    `

    5information_schema``tables`  

 

    6WHERE   

    `

    7table_schema` = 'YOUR_DB_NAME'; 

 

    此外,我建议您检查各个表中数字列的MIN和MAX记录,以确保数据本身是有效的,而不仅仅是看数据的总量(虽然这是查询所唯一能够读出的值)。另一种可供测试的选择是将数据库从新的服务器导出为SQL转储文件,并将其与旧服务器的SQL转储文件做比较。

 

    此外,在应用程序被迁移之前,我建议您先将一个应用程序的实例重定向到新的数据库上,以确认一切运行正常。

 

    另一种导出和导入的选项

 

    我们之所以把该选项放在最后,是因为我们的确不建议您去使用它。

 

    该方法实现起来非常的容易,因为它仅使用一个命令,便能一次性将转储文件导出、传输、并将其数据导入到新的数据库之中。

 

    而它的不足之处在于,一旦其网络链接断掉,您就需要重新启动它了。

 

    因此,我们认为它并不值得被推荐,尤其是在大型数据库中,可能会非常不适用。

 

    当然,如果您非要尝试一下的话,可以使用如下的命令:

 

    1mysqldump -u root -pPassword --all-databases | ssh user@new_hosthostcom 'cat - | mysql -u root -pPassword' 

 

    重要提示

 

    请确保在新旧两处,安装有相同官方发行版本的MySQL服务器。否则,你需要按照MySQL网站上的升级说明来进行统一(请参见(>

 

    请确保您在旧的服务器上拥有足够的空间来保存转储文件和压缩文件(应该有db_size×2的空间)。

 

    请确保您在新的服务器上拥有足够的空间来保存加密的和解密的转储文件、并能导入数据库(应该有db_size×3的空间)。

 

    如果您曾经考虑过只是将datadir从一个数据库转移到另一个的话,我建议您最好不要这样做。否则,您会搞乱数据库的内部结构,而且会给将来可能的问题埋下隐患。

 

    在新的服务器配置中,请不要忘了配置诸如innodb_log_file_size这样的重要标志。因为如果忘记了根据新服务器的规格而更新配置的话,很可能会导致严重的性能问题。

 

    在许多情况下,一般升级到新的数据库服务器的初衷是为了提高查询性能。而如果此类升级没有达到预期的改善,那么您就应该考虑去优化SQL查询,而不仅仅是升级硬件那么简单了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13477878.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-15
下一篇 2023-08-15

发表评论

登录后才能评论

评论列表(0条)