科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道4.12.6 MySQL-Win32与Unix MySQL比较

4.12.6 MySQL-Win32与Unix MySQL比较

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

Win95 为每个线程的创建损失大约200个字节的内存。因此,如果你进行许多连接,你不应该在Win95运行mysqld很长时间,因为MySQL的每个连接都创建一个新线程!

作者:天极软件 来源:天极软件 2008年1月21日

关键字: unix Win32 MySQL

  • 评论
  • 分享微博
  • 分享邮件

MySQL- Win32现在已经证明了自己很稳定。这个版本得MySQL有与对应的Unix版本同样的特征,除了下面:

Win95和线程
Win95 为每个线程的创建损失大约200个字节的内存。因此,如果你进行许多连接,你不应该在Win95运行mysqld很长时间,因为MySQL的每个连接都创建一个新线程!WinNT和Win98不能容忍这个bug。
阻塞式读(blocking read)
MySQL为每个连接使用一个阻塞式读取,这意味着:
  • 一个连接将不在8个小时后自动被断开,就像MySQL的Unix版本所发生的。
  • 如果一个连接“挂起”,不杀死MySQL就不可能打破它。
  • mysqladmin kill在一个睡眠的连接上将不工作。
  • 只要有睡眠的连接,mysqladmin shutdown不能中途中断。

我们计划在不久的将来修正它。

UDF函数
暂时MySQL-Win32不支持用户可定义函数。
DROP DATABASE
你不能抛弃一个正在被某些线程使用的数据库。
从任务管理器杀死MySQL
在Windows95上,你不能从任务管理器或用shutdown实用程序杀死MySQL。你必须用mysqladmin shutdown关闭它。
大小写区分的名字
文件名在Win32上是忽略大小写的,因此Win32上的MySQL数据库和表的名字也是忽略大小写的。唯一的限制是数据库和表的名字必须在整个一个给定的语句中大小写是一样的,因为它用my_tableMY_TABLE都指向同一个表子,下列查询将不工作:
SELECT * FROM my_table WHERE MY_TABLE.col=1; 
“ \ ”目录字符
在Win95上的路径名组成由“\”字符分隔,它在MySQL中也是转义字符。如果你正在使用LOAD DATA INFILESELECT ... INTO OUTFILE,你必须用两个“\”字符或使用Unix风格的文件名“/”字符:
LOAD DATA INFILE "C:\\tmp\\skr.txt" INTO TABLE skr;
SELECT * FROM skr INTO OUTFILE 'C:/tmp/skr.txt';
Can't open named pipe错误
如果你使用NT上的MySQL-Win32共享软件版本,用最新的mysql客户,你将得到下列错误:
error 2017: can't open named pipe to host: . pipe...

这是因为NT上MySQL正式版本缺省地使用命名管道。你能通过为新MySQL客户使用--host=localhost选项或创建一个包含下列信息的文件“C:\my.cnf”来避免这个错误:

[client]
host = localhost
Access denied for user错误
在访问在同一机器上的一个MySQL服务器时,如果你得到Access denied for user: 'some-user@unknown' to database 'mysql'的错误,这意味着MySQL不能正确解释你的主机名。为了修正它,你应该创建一个文件“\windows\hosts”,有下列信息:
127.0.0.1  localhost

对于可能想要帮助我们做好Win32版本的任何人,这里有的一些开放的问题:

  • 制作一个单用户MYSQL.DLL服务器。这应该包括一个标准MySQL服务器的一切,除了线程创建外。这将使MySQL在不需要一个真正的客户机/服务器和不需要从其他主机存取服务器的应用程序时更容易使用。
  • MySQL安装增加一些漂亮的“start”和“shutdown”图标。
  • MySQL启动选项创建造一个工具管理注册表条目。注册表条目的度缺已经被编码进mysqld.cc,但是它应该重新编码而更加面向“参数”,该工具应该也能更新“ \my.cnf”文件,如果用户比较喜欢使用它而不是注册表。
  • 当用--install登记mysqld作为一种服务(在 NT 上 )时,如果你也可以在命令行上增加缺省选项,它将更好,目前解决办法是更新“C:\my.cnf”文件。
  • 当你挂起一个运行Win95的膝上计算机时,当膝上计算机被恢复时,mysqld守护程序不接受新连接。我们不知道这是否 Win95、TCP/IP或MySQL的问题。
  • 能从任务管理器杀死mysqld将绝对是好事,目前,你必须使用mysqladmin shutdown
  • 移植用在 mysql命令行工具的readline到Win32。
  • 标准的GUI版本MySQL客户(mysqlmysqlshowmysqladminmysqldump) 将更好。
  • 如果在“net.c”中的套接字“读”和“写”函数是可中断的,那将更好。这将有可能在Win32上用mysqladmin kill杀死打开的线程。
  • 制作有关哪些Windows程序能工作在MySQL-Win32/MyODBC和必须做什么在能让他们工作的文档。
  • mysqld总是在“C”处启动而不在缺省地点,我们想让mysqld使用当前地点用于排序顺序。
  • 移植sqlclient到Win32(几乎完成)并加入更多的特征!
  • 把更多的选项加到Mysql Manager。
  • 在服务器和客户之间改变通讯协议,使用Windows内部通讯而不是套接字和TCP/IP。
  • .DLL实现UDF函数。
  • 增加宏以使用由Win32提供的更快的对线程安全的增加/减少方法。

其他Win32特定问题在MySQL-Win32分发的“README”文件中描述。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章